InternalCallVerifierVerifies values of objects/variables related to AUT calls Class: org.apache.ambari.funtest.server.tests.DeleteServiceTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Set up a test cluster with a service, a host and a few components.
* Attempt to delete the service. Verify the state of the DB.
* @throws Exception
*/
@Test public void testDeleteService() throws Exception {
String clusterName="c1";
String serviceName="HDFS";
ConnectionParams params=new ConnectionParams();
params.setServerName("localhost");
params.setServerApiPort(serverPort);
params.setServerAgentPort(serverAgentPort);
params.setUserName("admin");
params.setPassword("admin");
ClusterUtils clusterUtils=injector.getInstance(ClusterUtils.class);
clusterUtils.createSampleCluster(params);
JsonElement jsonResponse=RestApiUtils.executeRequest(new GetServiceWebRequest(params,clusterName,serviceName));
assertTrue(!jsonResponse.isJsonNull());
JsonObject jsonServiceInfoObj=jsonResponse.getAsJsonObject().get("ServiceInfo").getAsJsonObject();
String cluster_name=jsonServiceInfoObj.get("cluster_name").getAsString();
assertEquals(cluster_name,clusterName);
String service_name=jsonServiceInfoObj.get("service_name").getAsString();
assertEquals(service_name,serviceName);
jsonResponse=RestApiUtils.executeRequest(new StopServiceWebRequest(params,clusterName,serviceName));
ClusterServiceDAO clusterServiceDAO=injector.getInstance(ClusterServiceDAO.class);
List clusterServiceEntities=clusterServiceDAO.findAll();
assertEquals(clusterServiceEntities.size(),1);
assertEquals(clusterServiceEntities.get(0).getServiceName(),serviceName);
ClusterServiceEntity clusterServiceEntity=clusterServiceEntities.get(0);
long clusterId=clusterServiceEntity.getClusterId();
ServiceDesiredStateDAO serviceDesiredStateDAO=injector.getInstance(ServiceDesiredStateDAO.class);
List serviceDesiredStateEntities=serviceDesiredStateDAO.findAll();
assertEquals(serviceDesiredStateEntities.size(),1);
ServiceDesiredStateEntity serviceDesiredStateEntity=serviceDesiredStateEntities.get(0);
assertEquals(serviceDesiredStateEntity.getServiceName(),serviceName);
assertEquals(serviceDesiredStateEntity.getDesiredState(),State.INSTALLED);
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO=injector.getInstance(ServiceComponentDesiredStateDAO.class);
List serviceComponentDesiredStateEntities=serviceComponentDesiredStateDAO.findAll();
assertEquals(serviceComponentDesiredStateEntities.size(),3);
for ( ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity : serviceComponentDesiredStateEntities) {
assertEquals(serviceComponentDesiredStateEntity.getDesiredState(),State.INSTALLED);
}
HostComponentStateDAO hostComponentStateDAO=injector.getInstance(HostComponentStateDAO.class);
List hostComponentStateEntities=hostComponentStateDAO.findAll();
assertEquals(hostComponentStateEntities.size(),3);
HostComponentDesiredStateDAO hostComponentDesiredStateDAO=injector.getInstance(HostComponentDesiredStateDAO.class);
List hostComponentDesiredStateEntities=hostComponentDesiredStateDAO.findAll();
assertEquals(hostComponentDesiredStateEntities.size(),3);
jsonResponse=RestApiUtils.executeRequest(new DeleteServiceWebRequest(params,clusterName,serviceName));
WebResponse webResponse=new GetServiceWebRequest(params,clusterName,serviceName).getResponse();
assertEquals(webResponse.getStatusCode(),HttpStatus.SC_NOT_FOUND);
clusterServiceEntity=clusterServiceDAO.findByClusterAndServiceNames(clusterName,serviceName);
assertTrue(clusterServiceEntity == null);
ServiceDesiredStateEntityPK serviceDesiredStateEntityPK=injector.getInstance(ServiceDesiredStateEntityPK.class);
serviceDesiredStateEntityPK.setClusterId(clusterId);
serviceDesiredStateEntityPK.setServiceName(serviceName);
serviceDesiredStateEntity=serviceDesiredStateDAO.findByPK(serviceDesiredStateEntityPK);
assertTrue(serviceDesiredStateEntity == null);
ServiceComponentDesiredStateEntityPK serviceComponentDesiredStateEntityPK=injector.getInstance(ServiceComponentDesiredStateEntityPK.class);
ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity=serviceComponentDesiredStateDAO.findByPK(serviceComponentDesiredStateEntityPK);
assertTrue(serviceComponentDesiredStateEntity == null);
hostComponentStateEntities=hostComponentStateDAO.findByService(serviceName);
assertEquals(hostComponentStateEntities.size(),0);
hostComponentDesiredStateEntities=hostComponentDesiredStateDAO.findAll();
assertEquals(hostComponentDesiredStateEntities.size(),0);
jsonResponse=RestApiUtils.executeRequest(new DeleteClusterWebRequest(params,clusterName));
LOG.info(jsonResponse);
}
Class: org.apache.ambari.funtest.server.tests.GetStacksTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Waits for the ambari server to startup and then checks it's
* status by querying /api/v1/stacks (does not touch the DB)
*/
@Test public void testServerStatus() throws IOException {
String stacksPath="/api/v1/stacks";
String stacksUrl=String.format(SERVER_URL_FORMAT,serverPort) + stacksPath;
HttpClient httpClient=new HttpClient();
GetMethod getMethod=new GetMethod(stacksUrl);
try {
getMethod.addRequestHeader("Authorization",getBasicAdminAuthentication());
getMethod.addRequestHeader("X-Requested-By","ambari");
int statusCode=httpClient.executeMethod(getMethod);
assertEquals(HttpStatus.SC_OK,statusCode);
String responseBody=getMethod.getResponseBodyAsString();
assertTrue(responseBody != null);
JsonElement jsonElement=new JsonParser().parse(new JsonReader(new StringReader(responseBody)));
assertTrue(jsonElement != null);
JsonObject jsonObject=jsonElement.getAsJsonObject();
assertTrue(jsonObject.has("items"));
JsonArray stacksArray=jsonObject.get("items").getAsJsonArray();
assertTrue(stacksArray.size() > 0);
}
finally {
getMethod.releaseConnection();
}
}
Class: org.apache.ambari.funtest.server.tests.RoleBasedAccessControlBasicTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Creates an anonymous user and uses the user to add a cluster configuration.
* @throws Exception
*/
@Test public void testAddClusterConfigAsAnonUser() throws Exception {
ConnectionParams adminConnectionParams=createAdminConnectionParams();
String anonUserName="nothing";
String anonUserPwd="nothing";
ClusterUtils.createUser(adminConnectionParams,clusterName,anonUserName,anonUserPwd,AmbariUserRole.NONE);
String configType="test-hadoop-env";
String configTag="version1";
ClusterConfigParams configParams=new ClusterConfigParams();
configParams.setClusterName(clusterName);
configParams.setConfigType(configType);
configParams.setConfigTag(configTag);
configParams.setProperties(new HashMap(){
{
put("fs.default.name","localhost:9995");
}
}
);
ConnectionParams anonUserParams=createConnectionParams(anonUserName,anonUserPwd);
WebRequest webRequest=new CreateConfigurationWebRequest(anonUserParams,configParams);
WebResponse webResponse=webRequest.getResponse();
assertEquals(HttpStatus.SC_FORBIDDEN,webResponse.getStatusCode());
JsonElement jsonResponse=RestApiUtils.executeRequest(new DeleteUserWebRequest(adminConnectionParams,"nothing"));
LOG.info(jsonResponse);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Creates a user with cluster administrator privilege and adds a cluster configuration.
* @throws Exception
*/
@Test public void testAddClusterConfigAsClusterAdmin() throws Exception {
ConnectionParams adminConnectionParams=createAdminConnectionParams();
String clusterAdminName="clusterAdmin";
String clusterAdminPwd="clusterAdmin";
ClusterUtils.createUserClusterAdministrator(adminConnectionParams,clusterName,clusterAdminName,clusterAdminPwd);
String configType="test-hadoop-env";
String configTag="version1";
ClusterConfigParams configParams=new ClusterConfigParams();
configParams.setClusterName(clusterName);
configParams.setConfigType(configType);
configParams.setConfigTag(configTag);
configParams.setProperties(new HashMap(){
{
put("fs.default.name","localhost:9995");
}
}
);
ConnectionParams userConnectionParams=createConnectionParams(clusterAdminName,clusterAdminPwd);
WebRequest webRequest=new CreateConfigurationWebRequest(userConnectionParams,configParams);
WebResponse webResponse=webRequest.getResponse();
assertEquals(HttpStatus.SC_CREATED,webResponse.getStatusCode());
RestApiUtils.executeRequest(new DeleteUserWebRequest(adminConnectionParams,clusterAdminName));
}
Class: org.apache.ambari.msi.ClusterDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetHostState() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
TestClusterDefinitionProvider definitionProvider=new TestClusterDefinitionProvider();
TestHostInfoProvider hostInfoProvider=new TestHostInfoProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,definitionProvider,hostInfoProvider);
Assert.assertEquals("HEALTHY",clusterDefinition.getHostState("NAMENODE_MASTER.acme.com"));
stateProvider.setState(StateProvider.State.Stopped);
Assert.assertEquals("UNHEALTHY",clusterDefinition.getHostState("NAMENODE_MASTER.acme.com"));
stateProvider.setState(StateProvider.State.Paused);
Assert.assertEquals("UNHEALTHY",clusterDefinition.getHostState("NAMENODE_MASTER.acme.com"));
stateProvider.setState(StateProvider.State.Unknown);
Assert.assertEquals("UNHEALTHY",clusterDefinition.getHostState("NAMENODE_MASTER.acme.com"));
}
InternalCallVerifier BooleanVerifier
@Test public void testGetHosts() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
Set hosts=clusterDefinition.getHosts();
Assert.assertTrue(hosts.contains("NAMENODE_MASTER.acme.com"));
Assert.assertTrue(hosts.contains("SECONDARY_NAMENODE_MASTER.acme.com"));
Assert.assertTrue(hosts.contains("FLUME_SERVICE1.acme.com"));
Assert.assertTrue(hosts.contains("FLUME_SERVICE2.acme.com"));
Assert.assertTrue(hosts.contains("FLUME_SERVICE3.acme.com"));
Assert.assertTrue(hosts.contains("HBASE_MASTER.acme.com"));
Assert.assertTrue(hosts.contains("HIVE_SERVER_MASTER.acme.com"));
Assert.assertTrue(hosts.contains("JOBTRACKER_MASTER.acme.com"));
Assert.assertTrue(hosts.contains("OOZIE_SERVER_MASTER.acme.com"));
Assert.assertTrue(hosts.contains("slave1.acme.com"));
Assert.assertTrue(hosts.contains("slave2.acme.com"));
Assert.assertTrue(hosts.contains("slave3.acme.com"));
Assert.assertTrue(hosts.contains("WEBHCAT_MASTER.acme.com"));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetServiceStateFromInstalledToStartedWhenOneOfTheComponentsAlreadyStarted(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Running).times(4);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(1,clusterDefinition.setServiceState("HDFS","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetServiceState_IfStateUnknown(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(-1,clusterDefinition.setServiceState("HDFS","UNKNOWN"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier BooleanVerifier
@Test public void testGetComponents() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
Set components=clusterDefinition.getComponents("HDFS");
Assert.assertTrue(components.contains("NAMENODE"));
Assert.assertTrue(components.contains("SECONDARY_NAMENODE"));
Assert.assertTrue(components.contains("DATANODE"));
components=clusterDefinition.getComponents("MAPREDUCE");
Assert.assertTrue(components.contains("JOBTRACKER"));
Assert.assertTrue(components.contains("TASKTRACKER"));
components=clusterDefinition.getComponents("FLUME");
Assert.assertTrue(components.contains("FLUME_SERVER"));
components=clusterDefinition.getComponents("OOZIE");
Assert.assertTrue(components.contains("OOZIE_SERVER"));
components=clusterDefinition.getComponents("HBASE");
Assert.assertTrue(components.contains("HBASE_MASTER"));
Assert.assertTrue(components.contains("HBASE_REGIONSERVER"));
components=clusterDefinition.getComponents("ZOOKEEPER");
Assert.assertTrue(components.contains("ZOOKEEPER_SERVER"));
components=clusterDefinition.getComponents("HIVE");
Assert.assertTrue(components.contains("HIVE_SERVER"));
clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider("clusterproperties_HDP2_HA.txt","myCluster","HDP-2.0.6"),new TestHostInfoProvider());
components=clusterDefinition.getComponents("HDFS");
Assert.assertTrue(components.contains("NAMENODE"));
Assert.assertTrue(components.contains("SECONDARY_NAMENODE"));
Assert.assertTrue(components.contains("DATANODE"));
Assert.assertTrue(components.contains("ZKFC"));
Assert.assertTrue(components.contains("JOURNALNODE"));
clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider("clusterproperties_HDP21_HA.txt","myCluster","HDP-2.1.2"),new TestHostInfoProvider());
components=clusterDefinition.getComponents("HDFS");
Assert.assertTrue(components.contains("NAMENODE"));
Assert.assertTrue(components.contains("ZKFC"));
Assert.assertTrue(components.contains("JOURNALNODE"));
components=clusterDefinition.getComponents("YARN");
Assert.assertTrue(components.contains("RESOURCEMANAGER"));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetServiceState_IfStateAlreadySetToDesired(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Running).times(5);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(-1,clusterDefinition.setServiceState("HDFS","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetHostComponentState_IfHostComponentIsClientOnly(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(-1,clusterDefinition.setHostComponentState("hostName","SQOOP","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetHostComponentState_IfStateAlreadySetToDesired(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
expect(mockStateProvider.getRunningState(isA(String.class),isA(String.class))).andReturn(StateProvider.State.Running);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(-1,clusterDefinition.setHostComponentState("hostName","DATANODE","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier BooleanVerifier
@Test public void testHDP2ServicesAndComponents(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider("clusterproperties_HDP2.txt","myCluster","HDP-2.0.6");
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertFalse(clusterDefinition.getServices().contains("MAPREDUCE"));
Assert.assertTrue(clusterDefinition.getServices().contains("PIG"));
Assert.assertTrue(clusterDefinition.getServices().contains("SQOOP"));
Assert.assertTrue(clusterDefinition.getServices().contains("YARN"));
Assert.assertTrue(clusterDefinition.getServices().contains("MAPREDUCE2"));
Assert.assertTrue(clusterDefinition.getComponents("MAPREDUCE2").contains("MAPREDUCE2_CLIENT"));
Assert.assertTrue(clusterDefinition.getComponents("YARN").contains("NODEMANAGER"));
Assert.assertTrue(clusterDefinition.getComponents("YARN").contains("RESOURCEMANAGER"));
Assert.assertTrue(clusterDefinition.getComponents("YARN").contains("YARN_CLIENT"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier BooleanVerifier
@Test public void testGetHostComponents() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
Set hostComponents=clusterDefinition.getHostComponents("HDFS","NAMENODE_MASTER.acme.com");
Assert.assertTrue(hostComponents.contains("NAMENODE"));
hostComponents=clusterDefinition.getHostComponents("HDFS","slave1.acme.com");
Assert.assertTrue(hostComponents.contains("DATANODE"));
hostComponents=clusterDefinition.getHostComponents("HDFS","slave2.acme.com");
Assert.assertTrue(hostComponents.contains("DATANODE"));
clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider("clusterproperties_HDP2_HA.txt","myCluster","HDP-2.0.6"),new TestHostInfoProvider());
hostComponents=clusterDefinition.getHostComponents("HDFS","WINHDP-1");
Assert.assertTrue(hostComponents.contains("NAMENODE"));
Assert.assertTrue(hostComponents.contains("JOURNALNODE"));
Assert.assertTrue(hostComponents.contains("ZKFC"));
Assert.assertFalse(hostComponents.contains("DATANODE"));
Assert.assertFalse(hostComponents.contains("SECONDARY_NAMENODE"));
hostComponents=clusterDefinition.getHostComponents("HDFS","WINHDP-2");
Assert.assertTrue(hostComponents.contains("NAMENODE"));
Assert.assertTrue(hostComponents.contains("JOURNALNODE"));
Assert.assertTrue(hostComponents.contains("ZKFC"));
Assert.assertTrue(hostComponents.contains("DATANODE"));
Assert.assertTrue(hostComponents.contains("SECONDARY_NAMENODE"));
clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider("clusterproperties_HDP21_HA.txt","myCluster","HDP-2.1.2"),new TestHostInfoProvider());
hostComponents=clusterDefinition.getHostComponents("YARN","WINHDP-1");
Assert.assertTrue(hostComponents.contains("RESOURCEMANAGER"));
hostComponents=clusterDefinition.getHostComponents("HDFS","WINHDP-1");
Assert.assertTrue(hostComponents.contains("NAMENODE"));
Assert.assertTrue(hostComponents.contains("JOURNALNODE"));
hostComponents=clusterDefinition.getHostComponents("YARN","WINHDP-2");
Assert.assertTrue(hostComponents.contains("RESOURCEMANAGER"));
hostComponents=clusterDefinition.getHostComponents("HDFS","WINHDP-2");
Assert.assertTrue(hostComponents.contains("NAMENODE"));
Assert.assertTrue(hostComponents.contains("JOURNALNODE"));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetHostComponentState_IfStateUnknown(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(-1,clusterDefinition.setHostComponentState("hostName","DATANODE","UNKNOWN"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetServiceState_FromInstalledToStarted(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
expect(mockStateProvider.getRunningState(anyObject(String.class),anyObject(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(1,clusterDefinition.setServiceState("HDFS","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier BooleanVerifier
@Test public void testGetMajorStackVersion(){
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider("clusterproperties_HDP2.txt","myCluster","HDP-2.0.6");
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),testClusterDefinitionProvider,new TestHostInfoProvider());
Integer majorVersion=clusterDefinition.getMajorStackVersion();
Integer minorVersion=clusterDefinition.getMinorStackVersion();
Assert.assertTrue(2 == majorVersion);
Assert.assertTrue(0 == minorVersion);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetServiceState_IfServiceIsClientOnly(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(-1,clusterDefinition.setServiceState("PIG","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
InternalCallVerifier BooleanVerifier
@Test public void testGetServices() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
Set services=clusterDefinition.getServices();
Assert.assertTrue(services.contains("HDFS"));
Assert.assertTrue(services.contains("FLUME"));
Assert.assertTrue(services.contains("OOZIE"));
Assert.assertTrue(services.contains("MAPREDUCE"));
Assert.assertTrue(services.contains("HBASE"));
Assert.assertTrue(services.contains("ZOOKEEPER"));
Assert.assertTrue(services.contains("HIVE"));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetHostComponentState_FromInstalledToStarted(){
StateProvider mockStateProvider=createStrictMock(StateProvider.class);
ClusterDefinitionProvider mockClusterDefinitionProvider=createStrictMock(ClusterDefinitionProvider.class);
HostInfoProvider mockHostInfoProvider=createStrictMock(HostInfoProvider.class);
TestClusterDefinitionProvider testClusterDefinitionProvider=new TestClusterDefinitionProvider();
expect(mockClusterDefinitionProvider.getClusterName()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getVersionId()).andDelegateTo(testClusterDefinitionProvider);
expect(mockClusterDefinitionProvider.getInputStream()).andDelegateTo(testClusterDefinitionProvider);
expect(mockStateProvider.getRunningState(isA(String.class),isA(String.class))).andReturn(StateProvider.State.Stopped);
expect(mockStateProvider.setRunningState(anyObject(String.class),anyObject(String.class),eq(StateProvider.State.Running))).andReturn(null);
replay(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
ClusterDefinition clusterDefinition=new ClusterDefinition(mockStateProvider,mockClusterDefinitionProvider,mockHostInfoProvider);
Assert.assertEquals(1,clusterDefinition.setHostComponentState("hostName","DATANODE","STARTED"));
verify(mockClusterDefinitionProvider,mockHostInfoProvider,mockStateProvider);
}
Class: org.apache.ambari.msi.ClusterProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ClusterProvider provider=new ClusterProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
Assert.assertEquals("myCluster",resources.iterator().next().getPropertyValue(ClusterProvider.CLUSTER_NAME_PROPERTY_ID));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ClusterProvider provider=new ClusterProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ClusterProvider.CLUSTER_NAME_PROPERTY_ID).equals("myCluster").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource next=resources.iterator().next();
Assert.assertEquals("myCluster",next.getPropertyValue(ClusterProvider.CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("HDP-1.2.9",next.getPropertyValue(ClusterProvider.CLUSTER_VERSION_PROPERTY_ID));
predicate=new PredicateBuilder().property(ClusterProvider.CLUSTER_NAME_PROPERTY_ID).equals("non-existent Cluster").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
Class: org.apache.ambari.msi.ComponentProviderTest InternalCallVerifier EqualityVerifier
@Test public void testUpdateResources() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ComponentProvider provider=new ComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("TASKTRACKER").toPredicate();
HashMap properties=new HashMap();
properties.put(ComponentProvider.COMPONENT_STATE_PROPERTY_ID,"STARTED");
Request updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Running,stateProvider.getState());
properties.put(ComponentProvider.COMPONENT_STATE_PROPERTY_ID,"INSTALLED");
updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Stopped,stateProvider.getState());
properties.put(ComponentProvider.COMPONENT_STATE_PROPERTY_ID,"STARTED");
updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Running,stateProvider.getState());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ComponentProvider provider=new ComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("TASKTRACKER").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
predicate=new PredicateBuilder().property(ComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("TASKTRACKER").or().property(ComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("DATANODE").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property(ComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("BadComponent").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ComponentProvider provider=new ComponentProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(15,resources.size());
}
Class: org.apache.ambari.msi.ConfigurationProviderTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinitionMock=createStrictMock(ClusterDefinition.class);
StaxDriver staxDriver=PowerMock.createStrictMock(StaxDriver.class);
XStream xstream=PowerMock.createStrictMock(XStream.class);
PowerMock.mockStatic(ClassLoader.class);
InputStream mockInputStream=createMock(InputStream.class);
PowerMock.expectNew(StaxDriver.class).andReturn(staxDriver);
PowerMock.expectNew(XStream.class,staxDriver).andReturn(xstream);
xstream.alias("configuration",Map.class);
expectLastCall();
xstream.registerConverter(anyObject(ConfigurationProvider.ScomConfigConverter.class));
expectLastCall();
expect(ClassLoader.getSystemResourceAsStream(anyObject(String.class))).andReturn(mockInputStream).times(5);
expect(xstream.fromXML(mockInputStream)).andReturn(new HashMap(){
{
put("property_key","propery_value");
}
}
).times(5);
expect(clusterDefinitionMock.getClusterName()).andReturn("ambari");
PowerMock.replay(staxDriver,StaxDriver.class,xstream,XStream.class,ClassLoader.class);
replay(clusterDefinitionMock,mockInputStream);
ConfigurationProvider configurationProvider=new ConfigurationProvider(clusterDefinitionMock);
PowerMock.verify(staxDriver,StaxDriver.class,xstream,XStream.class,ClassLoader.class);
verify(clusterDefinitionMock,mockInputStream);
Predicate configPredicate=new PredicateBuilder().property(ConfigurationProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID).equals("ambari").and().property(ConfigurationProvider.CONFIGURATION_CONFIG_TYPE_PROPERTY_ID).equals("yarn-site").and().property(ConfigurationProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID).equals("version1").toPredicate();
Set resources=configurationProvider.getResources(PropertyHelper.getReadRequest(),configPredicate);
Assert.assertNotNull(resources);
Assert.assertEquals(1,resources.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testConfigurationProvider_initConfigurationResources_method() throws Exception {
ClusterDefinition clusterDefinitionMock=createStrictMock(ClusterDefinition.class);
StaxDriver staxDriver=PowerMock.createStrictMock(StaxDriver.class);
XStream xstream=PowerMock.createStrictMock(XStream.class);
PowerMock.mockStatic(ClassLoader.class);
InputStream mockInputStream=createMock(InputStream.class);
PowerMock.expectNew(StaxDriver.class).andReturn(staxDriver);
PowerMock.expectNew(XStream.class,staxDriver).andReturn(xstream);
xstream.alias("configuration",Map.class);
expectLastCall();
xstream.registerConverter(anyObject(ConfigurationProvider.ScomConfigConverter.class));
expectLastCall();
expect(ClassLoader.getSystemResourceAsStream(anyObject(String.class))).andReturn(mockInputStream).times(5);
expect(xstream.fromXML(mockInputStream)).andReturn(new HashMap(){
{
put("property_key","propery_value");
}
}
).times(5);
expect(clusterDefinitionMock.getClusterName()).andReturn("ambari");
PowerMock.replay(staxDriver,StaxDriver.class,xstream,XStream.class,ClassLoader.class);
replay(clusterDefinitionMock,mockInputStream);
ConfigurationProvider configurationProvider=new ConfigurationProvider(clusterDefinitionMock);
PowerMock.verify(staxDriver,StaxDriver.class,xstream,XStream.class,ClassLoader.class);
verify(clusterDefinitionMock,mockInputStream);
Assert.assertEquals(5,configurationProvider.getResources().size());
}
Class: org.apache.ambari.msi.HostComponentProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostComponentProvider provider=new HostComponentProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(25,resources.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckState() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostComponentProvider provider=new HostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostComponentProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("HBASE_REGIONSERVER").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("STARTED",resource.getPropertyValue(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
stateProvider.setHealthy(false);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("INSTALLED",resource.getPropertyValue(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
}
InternalCallVerifier EqualityVerifier
@Test public void testUpdateResources() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostComponentProvider provider=new HostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostComponentProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("HBASE_REGIONSERVER").toPredicate();
HashMap properties=new HashMap();
properties.put(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID,"STARTED");
Request updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Running,stateProvider.getState());
properties.put(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID,"INSTALLED");
updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Stopped,stateProvider.getState());
properties.put(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID,"STARTED");
updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Running,stateProvider.getState());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckStateFromCategory() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostComponentProvider provider=new HostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostComponentProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("HBASE_REGIONSERVER").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest("HostRoles"),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("STARTED",resource.getPropertyValue(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
stateProvider.setHealthy(false);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("INSTALLED",resource.getPropertyValue(HostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostComponentProvider provider=new HostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostComponentProvider.HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(5,resources.size());
predicate=new PredicateBuilder().property(HostComponentProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID).equals("UnknownHost").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
Class: org.apache.ambari.msi.HostProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesHostIP() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostProvider provider=new HostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("NAMENODE_MASTER.acme.com").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
String ip=(String)resource.getPropertyValue(HostProvider.HOST_IP_PROPERTY_ID);
Assert.assertEquals("127.0.0.1",ip);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostProvider provider=new HostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("NAMENODE_MASTER.acme.com").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
predicate=new PredicateBuilder().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("HBASE_MASTER.acme.com").or().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("slave3.acme.com").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("unknownHost").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckStateFromCategory() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostProvider provider=new HostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("slave3.acme.com").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest("Hosts"),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("HEALTHY",resource.getPropertyValue(HostProvider.HOST_STATE_PROPERTY_ID));
stateProvider.setState(StateProvider.State.Unknown);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("UNHEALTHY",resource.getPropertyValue(HostProvider.HOST_STATE_PROPERTY_ID));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckState() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostProvider provider=new HostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(HostProvider.HOST_NAME_PROPERTY_ID).equals("slave3.acme.com").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("HEALTHY",resource.getPropertyValue(HostProvider.HOST_STATE_PROPERTY_ID));
stateProvider.setState(StateProvider.State.Unknown);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("UNHEALTHY",resource.getPropertyValue(HostProvider.HOST_STATE_PROPERTY_ID));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
HostProvider provider=new HostProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(13,resources.size());
}
Class: org.apache.ambari.msi.RequestProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
clusterDefinition.getRequestResources().add(new ResourceImpl(Resource.Type.Request));
RequestProvider provider=new RequestProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
}
Class: org.apache.ambari.msi.ServiceProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ServiceProvider provider=new ServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
predicate=new PredicateBuilder().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("HDFS").or().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("FLUME").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("NO SERVICE").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckState() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ServiceProvider provider=new ServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("STARTED",resource.getPropertyValue(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
stateProvider.setHealthy(false);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("INSTALLED",resource.getPropertyValue(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
}
InternalCallVerifier EqualityVerifier
@Test public void testUpdateResources() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ServiceProvider provider=new ServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
HashMap properties=new HashMap();
properties.put(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID,"STARTED");
Request updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Running,stateProvider.getState());
properties.put(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID,"INSTALLED");
updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Stopped,stateProvider.getState());
properties.put(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID,"STARTED");
updateRequest=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(updateRequest,predicate);
Assert.assertEquals(StateProvider.State.Running,stateProvider.getState());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckStateFromCategory() throws Exception {
TestStateProvider stateProvider=new TestStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ServiceProvider provider=new ServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(ServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest("ServiceInfo"),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("STARTED",resource.getPropertyValue(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
stateProvider.setHealthy(false);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("INSTALLED",resource.getPropertyValue(ServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
ServiceProvider provider=new ServiceProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(7,resources.size());
}
Class: org.apache.ambari.msi.TaskProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestStateProvider(),new TestClusterDefinitionProvider(),new TestHostInfoProvider());
clusterDefinition.getTaskResources().add(new ResourceImpl(Resource.Type.Task));
TaskProvider provider=new TaskProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
}
Class: org.apache.ambari.scom.ClusterDefinitionProviderTest InternalCallVerifier NullVerifier
@Test public void testGetInputStream() throws Exception {
ClusterDefinitionProvider provider=getProvider("clusterproperties.txt","myCluster","myVersion");
InputStream inputStream=provider.getInputStream();
Assert.assertNotNull(inputStream);
}
Class: org.apache.ambari.scom.SQLPropertyProviderTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateResources_noHostNameProperty() throws Exception {
ConnectionFactory connectionFactory=createNiceMock(ConnectionFactory.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(connectionFactory.getConnection()).andReturn(connection).once();
expect(connection.createStatement()).andReturn(statement).once();
expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).once();
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999990L);
expect(resultSet.getNString("MetricValue")).andReturn("0");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999991L);
expect(resultSet.getNString("MetricValue")).andReturn("1");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999992L);
expect(resultSet.getNString("MetricValue")).andReturn("2");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999993L);
expect(resultSet.getNString("MetricValue")).andReturn("3");
expect(resultSet.next()).andReturn(false);
replay(connectionFactory,connection,statement,resultSet);
TestHostInfoProvider hostProvider=new TestHostInfoProvider();
SQLPropertyProvider provider=new SQLPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),hostProvider,CLUSTER_NAME_PROPERTY_ID,null,COMPONENT_NAME_PROPERTY_ID,SERVICE_NAME_PROPERTY_ID,connectionFactory);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
resource.setProperty(COMPONENT_NAME_PROPERTY_ID,"DATANODE");
resource.setProperty(SERVICE_NAME_PROPERTY_ID,"HDFS");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(PROPERTY_ID_1,new TemporalInfoImpl(10L,-1L,-1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID_1),temporalInfoMap);
provider.populateResources(Collections.singleton(resource),request,null);
Assert.assertNull(hostProvider.getHostId());
Assert.assertEquals("c1",hostProvider.getClusterName());
Assert.assertEquals("DATANODE",hostProvider.getComponentName());
verify(connectionFactory,connection,statement,resultSet);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateResources_hostNameProperty() throws Exception {
ConnectionFactory connectionFactory=createNiceMock(ConnectionFactory.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(connectionFactory.getConnection()).andReturn(connection).once();
expect(connection.createStatement()).andReturn(statement).once();
expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).once();
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999990L);
expect(resultSet.getNString("MetricValue")).andReturn("0");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999991L);
expect(resultSet.getNString("MetricValue")).andReturn("1");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999992L);
expect(resultSet.getNString("MetricValue")).andReturn("2");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999993L);
expect(resultSet.getNString("MetricValue")).andReturn("3");
expect(resultSet.next()).andReturn(false);
replay(connectionFactory,connection,statement,resultSet);
TestHostInfoProvider hostProvider=new TestHostInfoProvider();
SQLPropertyProvider provider=new SQLPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),hostProvider,CLUSTER_NAME_PROPERTY_ID,HOST_NAME_PROPERTY_ID,COMPONENT_NAME_PROPERTY_ID,SERVICE_NAME_PROPERTY_ID,connectionFactory);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
resource.setProperty(HOST_NAME_PROPERTY_ID,"domU-12-31-39-0E-34-E1.compute-1.internal");
resource.setProperty(COMPONENT_NAME_PROPERTY_ID,"DATANODE");
resource.setProperty(SERVICE_NAME_PROPERTY_ID,"HDFS");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(PROPERTY_ID_1,new TemporalInfoImpl(10L,-1L,-1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID_1),temporalInfoMap);
provider.populateResources(Collections.singleton(resource),request,null);
Assert.assertEquals("domU-12-31-39-0E-34-E1.compute-1.internal",hostProvider.getHostId());
Assert.assertNull(hostProvider.getClusterName());
Assert.assertNull(hostProvider.getComponentName());
verify(connectionFactory,connection,statement,resultSet);
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPopulateResources_multi() throws Exception {
ConnectionFactory connectionFactory=createNiceMock(ConnectionFactory.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(connectionFactory.getConnection()).andReturn(connection).once();
expect(connection.createStatement()).andReturn(statement).once();
expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).once();
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcQueueTime_avg_time");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999990L);
expect(resultSet.getNString("MetricValue")).andReturn("0");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcQueueTime_avg_time");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999991L);
expect(resultSet.getNString("MetricValue")).andReturn("1");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcSlowResponse_num_ops");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999992L);
expect(resultSet.getNString("MetricValue")).andReturn("2");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcSlowResponse_num_ops");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999993L);
expect(resultSet.getNString("MetricValue")).andReturn("3");
expect(resultSet.next()).andReturn(false);
replay(connectionFactory,connection,statement,resultSet);
SQLPropertyProvider provider=new SQLPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),new TestHostInfoProvider(),CLUSTER_NAME_PROPERTY_ID,HOST_NAME_PROPERTY_ID,COMPONENT_NAME_PROPERTY_ID,SERVICE_NAME_PROPERTY_ID,connectionFactory);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
resource.setProperty(HOST_NAME_PROPERTY_ID,"domU-12-31-39-0E-34-E1.compute-1.internal");
resource.setProperty(COMPONENT_NAME_PROPERTY_ID,"DATANODE");
resource.setProperty(SERVICE_NAME_PROPERTY_ID,"HDFS");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(PROPERTY_ID_1,new TemporalInfoImpl(10L,20L,1L));
Set propertyIds=new LinkedHashSet();
propertyIds.add(PROPERTY_ID_1);
propertyIds.add(PROPERTY_ID_2);
Request request=PropertyHelper.getReadRequest(propertyIds,temporalInfoMap);
Assert.assertEquals(1,provider.populateResources(Collections.singleton(resource),request,null).size());
Assert.assertTrue(resource.getPropertyValue(PROPERTY_ID_1) instanceof Number[][]);
Number[][] datapoints=(Number[][])resource.getPropertyValue(PROPERTY_ID_1);
for (int i=0; i < datapoints.length; ++i) {
Assert.assertEquals((long)i,datapoints[i][0]);
Assert.assertEquals((999990L + i) / 1000,datapoints[i][1]);
}
Assert.assertEquals(3L,resource.getPropertyValue(PROPERTY_ID_2));
verify(connectionFactory,connection,statement,resultSet);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testPopulateResources_pointInTime() throws Exception {
ConnectionFactory connectionFactory=createNiceMock(ConnectionFactory.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(connectionFactory.getConnection()).andReturn(connection).once();
expect(connection.createStatement()).andReturn(statement).once();
expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).once();
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcSlowResponse_num_ops");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getNString("MetricValue")).andReturn("0");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999990L);
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcSlowResponse_num_ops");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getNString("MetricValue")).andReturn("1");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999991L);
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcSlowResponse_num_ops");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getNString("MetricValue")).andReturn("2");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999992L);
expect(resultSet.next()).andReturn(true);
expect(resultSet.getString("RecordTypeContext")).andReturn("rpc");
expect(resultSet.getString("RecordTypeName")).andReturn("rpc");
expect(resultSet.getString("TagPairs")).andReturn("");
expect(resultSet.getString("MetricName")).andReturn("RpcSlowResponse_num_ops");
expect(resultSet.getString("ServiceName")).andReturn("datanode");
expect(resultSet.getString("NodeName")).andReturn("host1");
expect(resultSet.getNString("MetricValue")).andReturn("3");
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999993L);
expect(resultSet.next()).andReturn(false);
replay(connectionFactory,connection,statement,resultSet);
SQLPropertyProvider provider=new SQLPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),new TestHostInfoProvider(),CLUSTER_NAME_PROPERTY_ID,HOST_NAME_PROPERTY_ID,COMPONENT_NAME_PROPERTY_ID,SERVICE_NAME_PROPERTY_ID,connectionFactory);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
resource.setProperty(HOST_NAME_PROPERTY_ID,"domU-12-31-39-0E-34-E1.compute-1.internal");
resource.setProperty(COMPONENT_NAME_PROPERTY_ID,"DATANODE");
resource.setProperty(SERVICE_NAME_PROPERTY_ID,"HDFS");
Map temporalInfoMap=new HashMap();
Request request=PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID_2),temporalInfoMap);
Assert.assertEquals(1,provider.populateResources(Collections.singleton(resource),request,null).size());
Assert.assertEquals(3L,resource.getPropertyValue(PROPERTY_ID_2));
verify(connectionFactory,connection,statement,resultSet);
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPopulateResources() throws Exception {
ConnectionFactory connectionFactory=createNiceMock(ConnectionFactory.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(connectionFactory.getConnection()).andReturn(connection).once();
expect(connection.createStatement()).andReturn(statement).once();
expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).once();
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999990L);
expect(resultSet.getNString("MetricValue")).andReturn("0");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999991L);
expect(resultSet.getNString("MetricValue")).andReturn("1");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999992L);
expect(resultSet.getNString("MetricValue")).andReturn("2");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999993L);
expect(resultSet.getNString("MetricValue")).andReturn("3");
expect(resultSet.next()).andReturn(false);
replay(connectionFactory,connection,statement,resultSet);
SQLPropertyProvider provider=new SQLPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),new TestHostInfoProvider(),CLUSTER_NAME_PROPERTY_ID,HOST_NAME_PROPERTY_ID,COMPONENT_NAME_PROPERTY_ID,SERVICE_NAME_PROPERTY_ID,connectionFactory);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
resource.setProperty(HOST_NAME_PROPERTY_ID,"domU-12-31-39-0E-34-E1.compute-1.internal");
resource.setProperty(COMPONENT_NAME_PROPERTY_ID,"DATANODE");
resource.setProperty(SERVICE_NAME_PROPERTY_ID,"HDFS");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(PROPERTY_ID_1,new TemporalInfoImpl(10L,20L,1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID_1),temporalInfoMap);
Assert.assertEquals(1,provider.populateResources(Collections.singleton(resource),request,null).size());
Assert.assertTrue(resource.getPropertyValue(PROPERTY_ID_1) instanceof Number[][]);
Number[][] datapoints=(Number[][])resource.getPropertyValue(PROPERTY_ID_1);
for (int i=0; i < datapoints.length; ++i) {
Assert.assertEquals((long)i,datapoints[i][0]);
Assert.assertEquals((999990L + i) / 1000,datapoints[i][1]);
}
verify(connectionFactory,connection,statement,resultSet);
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPopulateResources_temporalStartTimeOnly() throws Exception {
ConnectionFactory connectionFactory=createNiceMock(ConnectionFactory.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(connectionFactory.getConnection()).andReturn(connection).once();
expect(connection.createStatement()).andReturn(statement).once();
expect(statement.executeQuery(anyObject(String.class))).andReturn(resultSet).once();
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999990L);
expect(resultSet.getNString("MetricValue")).andReturn("0");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999991L);
expect(resultSet.getNString("MetricValue")).andReturn("1");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999992L);
expect(resultSet.getNString("MetricValue")).andReturn("2");
expect(resultSet.next()).andReturn(true);
expect(resultSet.getLong("RecordTimeStamp")).andReturn(999993L);
expect(resultSet.getNString("MetricValue")).andReturn("3");
expect(resultSet.next()).andReturn(false);
replay(connectionFactory,connection,statement,resultSet);
TestHostInfoProvider hostProvider=new TestHostInfoProvider();
SQLPropertyProvider provider=new SQLPropertyProvider(PropertyHelper.getGangliaPropertyIds(Resource.Type.HostComponent),hostProvider,CLUSTER_NAME_PROPERTY_ID,HOST_NAME_PROPERTY_ID,COMPONENT_NAME_PROPERTY_ID,SERVICE_NAME_PROPERTY_ID,connectionFactory);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
resource.setProperty(HOST_NAME_PROPERTY_ID,"domU-12-31-39-0E-34-E1.compute-1.internal");
resource.setProperty(COMPONENT_NAME_PROPERTY_ID,"DATANODE");
resource.setProperty(SERVICE_NAME_PROPERTY_ID,"HDFS");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(PROPERTY_ID_1,new TemporalInfoImpl(10L,-1L,-1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID_1),temporalInfoMap);
Assert.assertEquals(1,provider.populateResources(Collections.singleton(resource),request,null).size());
Assert.assertTrue(resource.getPropertyValue(PROPERTY_ID_1) instanceof Number[][]);
Number[][] datapoints=(Number[][])resource.getPropertyValue(PROPERTY_ID_1);
for (int i=0; i < datapoints.length; ++i) {
Assert.assertEquals((long)i,datapoints[i][0]);
Assert.assertEquals((999990L + i) / 1000,datapoints[i][1]);
}
verify(connectionFactory,connection,statement,resultSet);
}
Class: org.apache.ambari.scom.SQLProviderModuleTest InternalCallVerifier BooleanVerifier
@Test public void testCreatePropertyProviders(){
SQLProviderModule providerModule=new SQLProviderModule();
providerModule.createPropertyProviders(Resource.Type.Component);
List providers=providerModule.getPropertyProviders(Resource.Type.Component);
Assert.assertTrue(providers.get(0) instanceof JMXPropertyProvider);
Assert.assertTrue(providers.get(1) instanceof SQLPropertyProvider);
providerModule.createPropertyProviders(Resource.Type.HostComponent);
providers=providerModule.getPropertyProviders(Resource.Type.HostComponent);
Assert.assertTrue(providers.get(0) instanceof JMXPropertyProvider);
Assert.assertTrue(providers.get(1) instanceof SQLPropertyProvider);
}
Class: org.apache.ambari.scom.logging.JpaLoggerTest InternalCallVerifier BooleanVerifier
@Test public void testShouldLog() throws Exception {
JpaLogger logger=new JpaLogger();
Assert.assertTrue(logger.shouldLog(SessionLog.SEVERE,""));
Assert.assertTrue(logger.shouldLog(SessionLog.WARNING,""));
Assert.assertFalse(logger.shouldLog(SessionLog.CONFIG,""));
Assert.assertFalse(logger.shouldLog(SessionLog.FINER,""));
Assert.assertFalse(logger.shouldLog(SessionLog.ALL,""));
logger.setLogLevel(Level.FINER);
Assert.assertTrue(logger.shouldLog(SessionLog.SEVERE,""));
Assert.assertTrue(logger.shouldLog(SessionLog.WARNING,""));
Assert.assertTrue(logger.shouldLog(SessionLog.CONFIG,""));
Assert.assertTrue(logger.shouldLog(SessionLog.FINER,""));
Assert.assertFalse(logger.shouldLog(SessionLog.ALL,""));
logger.setLogLevel(Level.SEVERE);
Assert.assertTrue(logger.shouldLog(SessionLog.SEVERE,""));
Assert.assertFalse(logger.shouldLog(SessionLog.WARNING,""));
Assert.assertFalse(logger.shouldLog(SessionLog.CONFIG,""));
Assert.assertFalse(logger.shouldLog(SessionLog.FINER,""));
Assert.assertFalse(logger.shouldLog(SessionLog.ALL,""));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetSetLogLevel() throws Exception {
JpaLogger logger=new JpaLogger();
Assert.assertEquals(Level.WARNING,logger.getLogLevel());
logger.setLogLevel(Level.ALL);
Assert.assertEquals(Level.ALL,logger.getLogLevel());
logger.setLogLevel(Level.FINER);
Assert.assertEquals(Level.FINER,logger.getLogLevel());
logger.setLogLevel(Level.OFF);
Assert.assertEquals(Level.OFF,logger.getLogLevel());
}
Class: org.apache.ambari.server.actionmanager.ExecutionCommandWrapperTest InternalCallVerifier EqualityVerifier
@Test public void testGetMergedConfig(){
Map baseConfig=new HashMap();
baseConfig.put(SERVICE_SITE_NAME1,SERVICE_SITE_VAL1);
baseConfig.put(SERVICE_SITE_NAME2,SERVICE_SITE_VAL2);
baseConfig.put(SERVICE_SITE_NAME3,SERVICE_SITE_VAL3);
baseConfig.put(SERVICE_SITE_NAME4,SERVICE_SITE_VAL4);
baseConfig.put(SERVICE_SITE_NAME5,SERVICE_SITE_VAL5);
Map overrideConfig=new HashMap();
overrideConfig.put(SERVICE_SITE_NAME2,SERVICE_SITE_VAL2_H);
overrideConfig.put(SERVICE_SITE_NAME6,SERVICE_SITE_VAL6_H);
Map mergedConfig=configHelper.getMergedConfig(baseConfig,overrideConfig);
Set configsKeys=new HashSet();
configsKeys.addAll(baseConfig.keySet());
configsKeys.addAll(overrideConfig.keySet());
Assert.assertEquals(configsKeys.size(),mergedConfig.size());
Assert.assertEquals(SERVICE_SITE_VAL1,mergedConfig.get(SERVICE_SITE_NAME1));
Assert.assertEquals(SERVICE_SITE_VAL2_H,mergedConfig.get(SERVICE_SITE_NAME2));
Assert.assertEquals(SERVICE_SITE_VAL3,mergedConfig.get(SERVICE_SITE_NAME3));
Assert.assertEquals(SERVICE_SITE_VAL4,mergedConfig.get(SERVICE_SITE_NAME4));
Assert.assertEquals(SERVICE_SITE_VAL5,mergedConfig.get(SERVICE_SITE_NAME5));
Assert.assertEquals(SERVICE_SITE_VAL6_H,mergedConfig.get(SERVICE_SITE_NAME6));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetExecutionCommand() throws JSONException, AmbariException {
Map> confs=new HashMap>();
Map configurationsGlobal=new HashMap();
configurationsGlobal.put(GLOBAL_NAME1,GLOBAL_VAL1);
confs.put(GLOBAL_CONFIG,configurationsGlobal);
Map> confTags=new HashMap>();
Map confTagServiceSite=new HashMap();
confTagServiceSite.put("tag",CLUSTER_VERSION_TAG);
confTagServiceSite.put("service_override_tag",SERVICE_VERSION_TAG);
confTagServiceSite.put("host_override_tag",HOST_VERSION_TAG);
confTags.put(SERVICE_SITE_CONFIG,confTagServiceSite);
Map confTagGlobal=Collections.singletonMap("tag",CLUSTER_VERSION_TAG);
confTags.put(GLOBAL_CONFIG,confTagGlobal);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setClusterName(CLUSTER1);
executionCommand.setTaskId(1);
executionCommand.setRequestAndStage(1,1);
executionCommand.setHostname(HOST1);
executionCommand.setRole("NAMENODE");
executionCommand.setRoleParams(Collections.emptyMap());
executionCommand.setRoleCommand(RoleCommand.START);
executionCommand.setConfigurations(confs);
executionCommand.setConfigurationTags(confTags);
executionCommand.setServiceName("HDFS");
executionCommand.setCommandType(AgentCommandType.EXECUTION_COMMAND);
executionCommand.setCommandParams(Collections.emptyMap());
String json=StageUtils.getGson().toJson(executionCommand,ExecutionCommand.class);
ExecutionCommandWrapper execCommWrap=new ExecutionCommandWrapper(json);
ExecutionCommand processedExecutionCommand=execCommWrap.getExecutionCommand();
Map serviceSiteConfig=processedExecutionCommand.getConfigurations().get(SERVICE_SITE_CONFIG);
Assert.assertEquals(SERVICE_SITE_VAL1_S,serviceSiteConfig.get(SERVICE_SITE_NAME1));
Assert.assertEquals(SERVICE_SITE_VAL2_H,serviceSiteConfig.get(SERVICE_SITE_NAME2));
Assert.assertEquals(SERVICE_SITE_VAL3,serviceSiteConfig.get(SERVICE_SITE_NAME3));
Assert.assertEquals(SERVICE_SITE_VAL4,serviceSiteConfig.get(SERVICE_SITE_NAME4));
Assert.assertEquals(SERVICE_SITE_VAL5_S,serviceSiteConfig.get(SERVICE_SITE_NAME5));
Assert.assertEquals(SERVICE_SITE_VAL6_H,serviceSiteConfig.get(SERVICE_SITE_NAME6));
Map globalConfig=processedExecutionCommand.getConfigurations().get(GLOBAL_CONFIG);
Assert.assertEquals(GLOBAL_VAL1,globalConfig.get(GLOBAL_NAME1));
Assert.assertEquals(GLOBAL_CLUSTER_VAL2,globalConfig.get(GLOBAL_NAME2));
Set serviceSiteKeys=new HashSet();
serviceSiteKeys.addAll(SERVICE_SITE_CLUSTER.keySet());
serviceSiteKeys.addAll(SERVICE_SITE_SERVICE.keySet());
serviceSiteKeys.addAll(SERVICE_SITE_HOST.keySet());
Assert.assertEquals(serviceSiteKeys.size(),serviceSiteConfig.size());
}
Class: org.apache.ambari.server.actionmanager.StageTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testAddServerActionCommand_userName() throws Exception {
final Stage stage=stageFactory.createNew(1,"/tmp","cluster1",978,"context",CLUSTER_HOST_INFO,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
stage.addServerActionCommand(ConfigureAction.class.getName(),"user1",Role.AMBARI_SERVER_ACTION,RoleCommand.EXECUTE,"cluster1",new ServiceComponentHostServerActionEvent(StageUtils.getHostName(),System.currentTimeMillis()),Collections.emptyMap(),null,null,1200,false,false);
List executionCommands=stage.getExecutionCommands(null);
assertEquals(1,executionCommands.size());
String actionUserName=executionCommands.get(0).getExecutionCommand().getRoleParams().get(ServerAction.ACTION_USER_NAME);
assertEquals("user1",actionUserName);
}
Class: org.apache.ambari.server.actionmanager.TestActionDBAccessorImpl InternalCallVerifier EqualityVerifier
@Test public void testGetStagesInProgressWithFailures() throws AmbariException {
populateActionDB(db,hostName,requestId,stageId);
populateActionDB(db,hostName,requestId + 1,stageId);
List stages=db.getStagesInProgress();
assertEquals(2,stages.size());
db.abortOperation(requestId);
stages=db.getStagesInProgress();
assertEquals(1,stages.size());
assertEquals(requestId + 1,stages.get(0).getRequestId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testHostRoleScheduled() throws InterruptedException, AmbariException {
populateActionDB(db,hostName,requestId,stageId);
Stage stage=db.getStage(StageUtils.getActionId(requestId,stageId));
assertEquals(HostRoleStatus.PENDING,stage.getHostRoleStatus(hostName,Role.HBASE_MASTER.toString()));
List entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,Role.HBASE_MASTER.toString());
assertEquals(HostRoleStatus.PENDING,entities.get(0).getStatus());
stage.setHostRoleStatus(hostName,Role.HBASE_MASTER.toString(),HostRoleStatus.QUEUED);
entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,Role.HBASE_MASTER.toString());
assertEquals(HostRoleStatus.QUEUED,stage.getHostRoleStatus(hostName,Role.HBASE_MASTER.toString()));
assertEquals(HostRoleStatus.PENDING,entities.get(0).getStatus());
db.hostRoleScheduled(stage,hostName,Role.HBASE_MASTER.toString());
entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,Role.HBASE_MASTER.toString());
assertEquals(HostRoleStatus.QUEUED,entities.get(0).getStatus());
Thread thread=new Thread(){
@Override public void run(){
Stage stage1=db.getStage("23-31");
stage1.setHostRoleStatus(hostName,Role.HBASE_MASTER.toString(),HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stage1,hostName,Role.HBASE_MASTER.toString());
injector.getInstance(EntityManager.class).clear();
}
}
;
thread.start();
thread.join();
injector.getInstance(EntityManager.class).clear();
entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,Role.HBASE_MASTER.toString());
assertEquals("Concurrent update failed",HostRoleStatus.COMPLETED,entities.get(0).getStatus());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testServerActionScheduled() throws InterruptedException, AmbariException {
populateActionDBWithServerAction(db,null,requestId,stageId);
final String roleName=Role.AMBARI_SERVER_ACTION.toString();
Stage stage=db.getStage(StageUtils.getActionId(requestId,stageId));
assertEquals(HostRoleStatus.PENDING,stage.getHostRoleStatus(null,roleName));
List entities=hostRoleCommandDAO.findByHostRole(null,requestId,stageId,roleName);
assertEquals(HostRoleStatus.PENDING,entities.get(0).getStatus());
stage.setHostRoleStatus(null,roleName,HostRoleStatus.QUEUED);
entities=hostRoleCommandDAO.findByHostRole(null,requestId,stageId,roleName);
assertEquals(HostRoleStatus.QUEUED,stage.getHostRoleStatus(null,roleName));
assertEquals(HostRoleStatus.PENDING,entities.get(0).getStatus());
db.hostRoleScheduled(stage,null,roleName);
entities=hostRoleCommandDAO.findByHostRole(null,requestId,stageId,roleName);
assertEquals(HostRoleStatus.QUEUED,entities.get(0).getStatus());
Thread thread=new Thread(){
@Override public void run(){
Stage stage1=db.getStage("23-31");
stage1.setHostRoleStatus(null,roleName,HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stage1,null,roleName);
injector.getInstance(EntityManager.class).clear();
}
}
;
thread.start();
thread.join();
injector.getInstance(EntityManager.class).clear();
entities=hostRoleCommandDAO.findByHostRole(null,requestId,stageId,roleName);
assertEquals("Concurrent update failed",HostRoleStatus.COMPLETED,entities.get(0).getStatus());
}
InternalCallVerifier BooleanVerifier
@Test public void testPersistActions() throws AmbariException {
populateActionDB(db,hostName,requestId,stageId);
for ( Stage stage : db.getAllStages(requestId)) {
log.info("taskId={}" + stage.getExecutionCommands(hostName).get(0).getExecutionCommand().getTaskId());
assertTrue(stage.getExecutionCommands(hostName).get(0).getExecutionCommand().getTaskId() > 0);
assertTrue(executionCommandDAO.findByPK(stage.getExecutionCommands(hostName).get(0).getExecutionCommand().getTaskId()) != null);
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCustomActionScheduled() throws InterruptedException, AmbariException {
populateActionDBWithCustomAction(db,hostName,requestId,stageId);
Stage stage=db.getStage(StageUtils.getActionId(requestId,stageId));
assertEquals(HostRoleStatus.PENDING,stage.getHostRoleStatus(hostName,actionName));
List entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,actionName);
assertEquals(HostRoleStatus.PENDING,entities.get(0).getStatus());
stage.setHostRoleStatus(hostName,actionName,HostRoleStatus.QUEUED);
entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,actionName);
assertEquals(HostRoleStatus.QUEUED,stage.getHostRoleStatus(hostName,actionName));
assertEquals(HostRoleStatus.PENDING,entities.get(0).getStatus());
db.hostRoleScheduled(stage,hostName,actionName);
entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,actionName);
assertEquals(HostRoleStatus.QUEUED,entities.get(0).getStatus());
Thread thread=new Thread(){
@Override public void run(){
Stage stage1=db.getStage("23-31");
stage1.setHostRoleStatus(hostName,actionName,HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stage1,hostName,actionName);
injector.getInstance(EntityManager.class).clear();
}
}
;
thread.start();
thread.join();
injector.getInstance(EntityManager.class).clear();
entities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,actionName);
assertEquals("Concurrent update failed",HostRoleStatus.COMPLETED,entities.get(0).getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testGet1000TasksFromOracleDB() throws Exception {
Stage s=stageFactory.createNew(requestId,"/a/b","cluster1",1L,"action db accessor test","clusterHostInfo","commandParamsStage","hostParamsStage");
s.setStageId(stageId);
for (int i=1000; i < 2002; i++) {
String host="host" + i;
clusters.addHost(host);
clusters.getHost(host).persist();
s.addHostRoleExecutionCommand("host" + i,Role.HBASE_MASTER,RoleCommand.START,null,"cluster1","HBASE",false,false);
}
List stages=new ArrayList();
stages.add(s);
Request request=new Request(stages,clusters);
db.persistActions(request);
List entities=hostRoleCommandDAO.findByRequest(request.getRequestId());
assertEquals(1002,entities.size());
List taskIds=new ArrayList();
for ( HostRoleCommandEntity entity : entities) {
taskIds.add(entity.getTaskId());
}
TestDBAccessorImpl testDBAccessorImpl=(TestDBAccessorImpl)injector.getInstance(DBAccessor.class);
testDBAccessorImpl.setDbTypeOverride(ORACLE);
assertEquals(ORACLE,injector.getInstance(DBAccessor.class).getDbType());
entities=hostRoleCommandDAO.findByPKs(taskIds);
assertEquals("Tasks returned from DB match the ones created",taskIds.size(),entities.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRequestsByStatus() throws AmbariException {
List requestIds=new ArrayList();
requestIds.add(requestId + 1);
requestIds.add(requestId);
populateActionDB(db,hostName,requestId,stageId);
clusters.addHost("host2");
clusters.getHost("host2").persist();
populateActionDB(db,hostName,requestId + 1,stageId);
List requestIdsResult=db.getRequestsByStatus(null,BaseRequest.DEFAULT_PAGE_SIZE,false);
assertNotNull("List of request IDs is null",requestIdsResult);
assertEquals("Request IDs not matches",requestIds,requestIdsResult);
}
BranchVerifier InternalCallVerifier EqualityVerifier
@Test public void testAbortRequest() throws AmbariException {
Stage s=stageFactory.createNew(requestId,"/a/b","cluster1",1L,"action db accessor test","clusterHostInfo","commandParamsStage","hostParamsStage");
s.setStageId(stageId);
clusters.addHost("host2");
clusters.getHost("host2").persist();
clusters.addHost("host3");
clusters.getHost("host3").persist();
clusters.addHost("host4");
clusters.getHost("host4").persist();
s.addHostRoleExecutionCommand("host1",Role.HBASE_MASTER,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_MASTER.toString(),"host1",System.currentTimeMillis()),"cluster1","HBASE",false,false);
s.addHostRoleExecutionCommand("host2",Role.HBASE_MASTER,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_MASTER.toString(),"host2",System.currentTimeMillis()),"cluster1","HBASE",false,false);
s.addHostRoleExecutionCommand("host3",Role.HBASE_REGIONSERVER,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_REGIONSERVER.toString(),"host3",System.currentTimeMillis()),"cluster1","HBASE",false,false);
s.addHostRoleExecutionCommand("host4",Role.HBASE_REGIONSERVER,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_REGIONSERVER.toString(),"host4",System.currentTimeMillis()),"cluster1","HBASE",false,false);
List stages=new ArrayList();
stages.add(s);
s.getOrderedHostRoleCommands().get(0).setStatus(HostRoleStatus.PENDING);
s.getOrderedHostRoleCommands().get(1).setStatus(HostRoleStatus.IN_PROGRESS);
s.getOrderedHostRoleCommands().get(2).setStatus(HostRoleStatus.QUEUED);
HostRoleCommand cmd=s.getOrderedHostRoleCommands().get(3);
String hostName=cmd.getHostName();
cmd.setStatus(HostRoleStatus.COMPLETED);
Request request=new Request(stages,clusters);
db.persistActions(request);
db.abortOperation(requestId);
List aborted=new ArrayList();
List commands=db.getRequestTasks(requestId);
for ( HostRoleCommand command : commands) {
if (command.getHostName().equals(hostName)) {
assertEquals(HostRoleStatus.COMPLETED,command.getStatus());
}
else {
assertEquals(HostRoleStatus.ABORTED,command.getStatus());
aborted.add(command.getTaskId());
}
}
db.resubmitTasks(aborted);
commands=db.getRequestTasks(requestId);
for ( HostRoleCommand command : commands) {
if (command.getHostName().equals(hostName)) {
assertEquals(HostRoleStatus.COMPLETED,command.getStatus());
}
else {
assertEquals(HostRoleStatus.PENDING,command.getStatus());
}
}
}
InternalCallVerifier EqualityVerifier
@Test public void testCancelCommandReport() throws AmbariException {
String hostname="host1";
populateActionDB(db,hostname,requestId,stageId);
Stage stage=db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId,stage.getStageId());
stage.setHostRoleStatus(hostname,"HBASE_MASTER",HostRoleStatus.ABORTED);
db.hostRoleScheduled(stage,hostname,"HBASE_MASTER");
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setTaskId(1);
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setRole("HBASE_MASTER");
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(0);
reports.add(cr);
am.processTaskResponse(hostname,reports,stage.getOrderedHostRoleCommands());
assertEquals(0,am.getAction(requestId,stageId).getExitCode(hostname,"HBASE_MASTER"));
assertEquals("HostRoleStatus should remain ABORTED " + "(command report status should be ignored)",HostRoleStatus.ABORTED,am.getAction(requestId,stageId).getHostRoleStatus(hostname,"HBASE_MASTER"));
Stage s=db.getAllStages(requestId).get(0);
assertEquals("HostRoleStatus should remain ABORTED " + "(command report status should be ignored)",HostRoleStatus.ABORTED,s.getHostRoleStatus(hostname,"HBASE_MASTER"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetStagesInProgressWithManyCommands() throws AmbariException {
for (int i=0; i < 1000; i++) {
String hostName="c64-" + i;
clusters.addHost(hostName);
clusters.getHost(hostName).persist();
}
for (int i=0; i < 1000; i++) {
String hostName="c64-" + i;
populateActionDBMultipleStages(3,db,hostName,requestId + i,stageId);
}
int commandsInProgressCount=db.getCommandsInProgressCount();
List stages=db.getStagesInProgress();
assertEquals(6000,commandsInProgressCount);
assertEquals(3000,stages.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testActionResponse() throws AmbariException {
String hostname="host1";
populateActionDB(db,hostname,requestId,stageId);
Stage stage=db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId,stage.getStageId());
stage.setHostRoleStatus(hostname,"HBASE_MASTER",HostRoleStatus.QUEUED);
db.hostRoleScheduled(stage,hostname,"HBASE_MASTER");
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setTaskId(1);
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setRole("HBASE_MASTER");
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(215);
reports.add(cr);
am.processTaskResponse(hostname,reports,stage.getOrderedHostRoleCommands());
assertEquals(215,am.getAction(requestId,stageId).getExitCode(hostname,"HBASE_MASTER"));
assertEquals(HostRoleStatus.COMPLETED,am.getAction(requestId,stageId).getHostRoleStatus(hostname,"HBASE_MASTER"));
Stage s=db.getAllStages(requestId).get(0);
assertEquals(HostRoleStatus.COMPLETED,s.getHostRoleStatus(hostname,"HBASE_MASTER"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests getting requests which are fully COMPLETED out the database. This
* will test for partial completions as well.
* @throws AmbariException
*/
@Test public void testGetCompletedRequests() throws AmbariException {
List requestIds=new ArrayList();
requestIds.add(requestId);
requestIds.add(requestId + 1);
populateActionDBWithCompletedRequest(db,hostName,requestId,stageId);
List requestIdsResult=db.getRequestsByStatus(RequestStatus.COMPLETED,BaseRequest.DEFAULT_PAGE_SIZE,false);
assertEquals(1,requestIdsResult.size());
assertTrue(requestIdsResult.contains(requestId));
populateActionDBWithPartiallyCompletedRequest(db,hostName,requestId + 1,stageId);
requestIdsResult=db.getRequestsByStatus(RequestStatus.COMPLETED,BaseRequest.DEFAULT_PAGE_SIZE,false);
assertEquals(1,requestIdsResult.size());
assertTrue(requestIdsResult.contains(requestId));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetStagesInProgressWithManyStages() throws AmbariException {
populateActionDBMultipleStages(3,db,hostName,requestId,stageId);
populateActionDBMultipleStages(3,db,hostName,requestId + 1,stageId + 3);
populateActionDBMultipleStages(3,db,hostName,requestId + 2,stageId + 3);
int commandsInProgressCount=db.getCommandsInProgressCount();
List stages=db.getStagesInProgress();
assertEquals(18,commandsInProgressCount);
assertEquals(9,stages.size());
long lastRequestId=Integer.MIN_VALUE;
for ( Stage stage : stages) {
assertTrue(stage.getRequestId() >= lastRequestId);
lastRequestId=stage.getRequestId();
}
db.abortOperation(requestId);
commandsInProgressCount=db.getCommandsInProgressCount();
stages=db.getStagesInProgress();
assertEquals(12,commandsInProgressCount);
assertEquals(6,stages.size());
stages.get(0).setHostRoleStatus(hostName,Role.HBASE_MASTER.toString(),HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stages.get(0),hostName,Role.HBASE_MASTER.toString());
commandsInProgressCount=db.getCommandsInProgressCount();
stages=db.getStagesInProgress();
assertEquals(11,commandsInProgressCount);
assertEquals(6,stages.size());
stages.get(0).setHostRoleStatus(hostName,Role.HBASE_REGIONSERVER.toString(),HostRoleStatus.COMPLETED);
db.hostRoleScheduled(stages.get(0),hostName,Role.HBASE_REGIONSERVER.toString());
commandsInProgressCount=db.getCommandsInProgressCount();
stages=db.getStagesInProgress();
assertEquals(10,commandsInProgressCount);
assertEquals(5,stages.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRequestsByStatusWithParams() throws AmbariException {
List ids=new ArrayList();
for (long l=1; l <= 10; l++) {
ids.add(l);
}
for ( Long id : ids) {
populateActionDB(db,hostName,id,stageId);
}
List expected=null;
List actual=null;
actual=db.getRequestsByStatus(null,BaseRequest.DEFAULT_PAGE_SIZE,false);
expected=reverse(new ArrayList(ids));
assertEquals("Request IDs not matches",expected,actual);
actual=db.getRequestsByStatus(null,4,false);
expected=reverse(new ArrayList(ids.subList(ids.size() - 4,ids.size())));
assertEquals("Request IDs not matches",expected,actual);
actual=db.getRequestsByStatus(null,7,true);
expected=new ArrayList(ids.subList(0,7));
assertEquals("Request IDs not matches",expected,actual);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateHostRole() throws Exception {
populateActionDB(db,hostName,requestId,stageId);
StringBuilder sb=new StringBuilder();
for (int i=0; i < 50000; i++) {
sb.append("1234567890");
}
String largeString=sb.toString();
CommandReport commandReport=new CommandReport();
commandReport.setStatus(HostRoleStatus.COMPLETED.toString());
commandReport.setStdOut(largeString);
commandReport.setStdErr(largeString);
commandReport.setStructuredOut(largeString);
commandReport.setExitCode(123);
db.updateHostRoleState(hostName,requestId,stageId,Role.HBASE_MASTER.toString(),commandReport);
List commandEntities=hostRoleCommandDAO.findByHostRole(hostName,requestId,stageId,Role.HBASE_MASTER.toString());
assertEquals(1,commandEntities.size());
HostRoleCommandEntity commandEntity=commandEntities.get(0);
HostRoleCommand command=db.getTask(commandEntity.getTaskId());
assertNotNull(command);
assertEquals(largeString,command.getStdout());
assertEquals(largeString,command.getStructuredOut());
assertTrue(command.getEndTime() != -1);
}
Class: org.apache.ambari.server.actionmanager.TestActionManager InternalCallVerifier EqualityVerifier
@Test public void testLargeLogs() throws AmbariException {
ActionDBAccessor db=injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am=new ActionManager(5000,1200000,new ActionQueue(),clusters,db,new HostsMap((String)null),unitOfWork,injector.getInstance(RequestFactory.class),null,null);
populateActionDB(db,hostname);
Stage stage=db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId,stage.getStageId());
stage.setHostRoleStatus(hostname,"HBASE_MASTER",HostRoleStatus.QUEUED);
db.hostRoleScheduled(stage,hostname,"HBASE_MASTER");
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setTaskId(1);
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setRole("HBASE_MASTER");
cr.setStatus("COMPLETED");
String errLog=Arrays.toString(new byte[100000]);
String outLog=Arrays.toString(new byte[110000]);
cr.setStdErr(errLog);
cr.setStdOut(outLog);
cr.setStructuredOut(outLog);
cr.setExitCode(215);
reports.add(cr);
am.processTaskResponse(hostname,reports,stage.getOrderedHostRoleCommands());
assertEquals(215,am.getAction(requestId,stageId).getExitCode(hostname,"HBASE_MASTER"));
assertEquals(HostRoleStatus.COMPLETED,am.getAction(requestId,stageId).getHostRoleStatus(hostname,"HBASE_MASTER"));
assertEquals(errLog.length(),am.getAction(requestId,stageId).getHostRoleCommand(hostname,"HBASE_MASTER").getStderr().length());
assertEquals(outLog.length(),am.getAction(requestId,stageId).getHostRoleCommand(hostname,"HBASE_MASTER").getStdout().length());
assertEquals(outLog.length(),am.getAction(requestId,stageId).getHostRoleCommand(hostname,"HBASE_MASTER").getStructuredOut().length());
}
InternalCallVerifier EqualityVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testCascadeDeleteStages() throws Exception {
ActionDBAccessor db=injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am=injector.getInstance(ActionManager.class);
populateActionDB(db,hostname);
assertEquals(1,clusters.getClusters().size());
clusters.getCluster(clusterName);
clusters.deleteCluster(clusterName);
assertEquals(0,clusters.getClusters().size());
}
InternalCallVerifier IdentityVerifier
@Test public void testGetActions() throws Exception {
int requestId=500;
ActionQueue queue=createNiceMock(ActionQueue.class);
ActionDBAccessor db=createStrictMock(ActionDBAccessor.class);
Clusters clusters=createNiceMock(Clusters.class);
Stage stage1=createNiceMock(Stage.class);
Stage stage2=createNiceMock(Stage.class);
List listStages=new ArrayList();
listStages.add(stage1);
listStages.add(stage2);
expect(db.getLastPersistedRequestIdWhenInitialized()).andReturn(Long.valueOf(1000));
expect(db.getAllStages(requestId)).andReturn(listStages);
replay(queue,db,clusters);
ActionManager manager=new ActionManager(0,0,queue,clusters,db,null,unitOfWork,injector.getInstance(RequestFactory.class),null,null);
assertSame(listStages,manager.getActions(requestId));
verify(queue,db,clusters);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testActionResponse() throws AmbariException {
ActionDBAccessor db=injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am=new ActionManager(5000,1200000,new ActionQueue(),clusters,db,new HostsMap((String)null),unitOfWork,injector.getInstance(RequestFactory.class),null,null);
populateActionDB(db,hostname);
Stage stage=db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId,stage.getStageId());
stage.setHostRoleStatus(hostname,"HBASE_MASTER",HostRoleStatus.QUEUED);
db.hostRoleScheduled(stage,hostname,"HBASE_MASTER");
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setTaskId(1);
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setRole("HBASE_MASTER");
cr.setStatus("COMPLETED");
cr.setStdErr("ERROR");
cr.setStdOut("OUTPUT");
cr.setStructuredOut("STRUCTURED_OUTPUT");
cr.setExitCode(215);
reports.add(cr);
am.processTaskResponse(hostname,reports,stage.getOrderedHostRoleCommands());
assertEquals(215,am.getAction(requestId,stageId).getExitCode(hostname,"HBASE_MASTER"));
assertEquals(HostRoleStatus.COMPLETED,am.getAction(requestId,stageId).getHostRoleStatus(hostname,"HBASE_MASTER"));
assertEquals("ERROR",am.getAction(requestId,stageId).getHostRoleCommand(hostname,"HBASE_MASTER").getStderr());
assertEquals("OUTPUT",am.getAction(requestId,stageId).getHostRoleCommand(hostname,"HBASE_MASTER").getStdout());
assertEquals("STRUCTURED_OUTPUT",am.getAction(requestId,stageId).getHostRoleCommand(hostname,"HBASE_MASTER").getStructuredOut());
assertNotNull(db.getRequest(requestId));
assertFalse(db.getRequest(requestId).getEndTime() == -1);
}
Class: org.apache.ambari.server.actionmanager.TestActionScheduler APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* This test sends verifies that ActionScheduler returns up-to-date cluster host info and caching works correctly.
*/
@Test public void testClusterHostInfoCache() throws Exception {
Type type=new TypeToken>>(){
}
.getType();
Map> clusterHostInfo1=StageUtils.getGson().fromJson(CLUSTER_HOST_INFO,type);
Map> clusterHostInfo2=StageUtils.getGson().fromJson(CLUSTER_HOST_INFO_UPDATED,type);
int stageId=1;
int requestId1=1;
int requestId2=2;
ActionQueue aq=new ActionQueue();
Properties properties=new Properties();
Configuration conf=new Configuration(properties);
Clusters fsm=mock(Clusters.class);
Cluster oneClusterMock=mock(Cluster.class);
Service serviceObj=mock(Service.class);
ServiceComponent scomp=mock(ServiceComponent.class);
ServiceComponentHost sch=mock(ServiceComponentHost.class);
UnitOfWork unitOfWork=mock(UnitOfWork.class);
when(fsm.getCluster(anyString())).thenReturn(oneClusterMock);
when(oneClusterMock.getService(anyString())).thenReturn(serviceObj);
when(serviceObj.getServiceComponent(anyString())).thenReturn(scomp);
when(scomp.getServiceComponentHost(anyString())).thenReturn(sch);
when(serviceObj.getCluster()).thenReturn(oneClusterMock);
Host host=mock(Host.class);
HashMap hosts=new HashMap();
hosts.put(hostname,sch);
when(scomp.getServiceComponentHosts()).thenReturn(hosts);
when(fsm.getHost(anyString())).thenReturn(host);
when(host.getState()).thenReturn(HostState.HEALTHY);
when(host.getHostName()).thenReturn(hostname);
ActionDBAccessor db=mock(ActionDBAccessorImpl.class);
RequestEntity request=mock(RequestEntity.class);
when(request.isExclusive()).thenReturn(false);
when(db.getRequestEntity(anyLong())).thenReturn(request);
Stage s1=StageUtils.getATestStage(requestId1,stageId,hostname,CLUSTER_HOST_INFO,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
Stage s2=StageUtils.getATestStage(requestId2,stageId,hostname,CLUSTER_HOST_INFO_UPDATED,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
when(db.getCommandsInProgressCount()).thenReturn(1);
when(db.getStagesInProgress()).thenReturn(Collections.singletonList(s1));
ActionScheduler scheduler=new ActionScheduler(100,100,db,aq,fsm,10000,new HostsMap((String)null),unitOfWork,null,conf);
scheduler.setTaskTimeoutAdjustment(false);
List ac=waitForQueueSize(hostname,aq,1,scheduler);
assertTrue(ac.get(0) instanceof ExecutionCommand);
assertEquals(String.valueOf(requestId1) + "-" + stageId,((ExecutionCommand)(ac.get(0))).getCommandId());
assertEquals(clusterHostInfo1,((ExecutionCommand)(ac.get(0))).getClusterHostInfo());
when(db.getCommandsInProgressCount()).thenReturn(1);
when(db.getStagesInProgress()).thenReturn(Collections.singletonList(s2));
ac=waitForQueueSize(hostname,aq,1,scheduler);
assertTrue(ac.get(0) instanceof ExecutionCommand);
assertEquals(String.valueOf(requestId2) + "-" + stageId,((ExecutionCommand)(ac.get(0))).getCommandId());
assertEquals(clusterHostInfo2,((ExecutionCommand)(ac.get(0))).getClusterHostInfo());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSuccessFactors(){
Stage s=StageUtils.getATestStage(1,1,CLUSTER_HOST_INFO,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
assertEquals(new Float(0.5),new Float(s.getSuccessFactor(Role.DATANODE)));
assertEquals(new Float(0.5),new Float(s.getSuccessFactor(Role.TASKTRACKER)));
assertEquals(new Float(0.5),new Float(s.getSuccessFactor(Role.GANGLIA_MONITOR)));
assertEquals(new Float(0.5),new Float(s.getSuccessFactor(Role.HBASE_REGIONSERVER)));
assertEquals(new Float(1.0),new Float(s.getSuccessFactor(Role.NAMENODE)));
assertEquals(new Float(1.0),new Float(s.getSuccessFactor(Role.GANGLIA_SERVER)));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testOpFailedEventRaisedForAbortedHostRole() throws Exception {
ActionQueue aq=new ActionQueue();
Properties properties=new Properties();
Configuration conf=new Configuration(properties);
Clusters fsm=mock(Clusters.class);
Cluster oneClusterMock=mock(Cluster.class);
Service serviceObj=mock(Service.class);
ServiceComponent scomp=mock(ServiceComponent.class);
ServiceComponentHost sch1=mock(ServiceComponentHost.class);
ServiceComponentHost sch2=mock(ServiceComponentHost.class);
String hostname1="host1";
String hostname2="host2";
Host host1=mock(Host.class);
Host host2=mock(Host.class);
HostEntity hostEntity1=new HostEntity();
hostEntity1.setHostName(hostname1);
HostEntity hostEntity2=new HostEntity();
hostEntity2.setHostName(hostname2);
hostDAO.merge(hostEntity1);
hostDAO.merge(hostEntity2);
HashMap hosts=new HashMap();
hosts.put(hostname1,sch1);
hosts.put(hostname2,sch2);
when(scomp.getServiceComponentHosts()).thenReturn(hosts);
when(fsm.getHost(hostname1)).thenReturn(host1);
when(fsm.getHost(hostname2)).thenReturn(host2);
when(host1.getState()).thenReturn(HostState.HEARTBEAT_LOST);
when(host2.getState()).thenReturn(HostState.HEALTHY);
when(host1.getHostName()).thenReturn(hostname1);
when(host2.getHostName()).thenReturn(hostname2);
when(scomp.getServiceComponentHost(hostname1)).thenReturn(sch1);
when(scomp.getServiceComponentHost(hostname2)).thenReturn(sch2);
UnitOfWork unitOfWork=mock(UnitOfWork.class);
when(fsm.getCluster(anyString())).thenReturn(oneClusterMock);
when(oneClusterMock.getService(anyString())).thenReturn(serviceObj);
when(serviceObj.getServiceComponent(anyString())).thenReturn(scomp);
when(serviceObj.getCluster()).thenReturn(oneClusterMock);
final List stages=new ArrayList();
Stage stage=stageFactory.createNew(1,"/tmp","cluster1",1L,"stageWith2Tasks",CLUSTER_HOST_INFO,"{\"command_param\":\"param_value\"}","{\"host_param\":\"param_value\"}");
addInstallTaskToStage(stage,hostname1,"cluster1",Role.DATANODE,RoleCommand.INSTALL,Service.Type.HDFS,1);
addInstallTaskToStage(stage,hostname2,"cluster1",Role.NAMENODE,RoleCommand.INSTALL,Service.Type.HDFS,2);
stages.add(stage);
ActionDBAccessor db=mock(ActionDBAccessor.class);
RequestEntity request=mock(RequestEntity.class);
when(request.isExclusive()).thenReturn(false);
when(db.getRequestEntity(anyLong())).thenReturn(request);
when(db.getCommandsInProgressCount()).thenReturn(stages.size());
when(db.getStagesInProgress()).thenReturn(stages);
doAnswer(new Answer(){
@Override public Void answer( InvocationOnMock invocation) throws Throwable {
String host=(String)invocation.getArguments()[0];
String role=(String)invocation.getArguments()[3];
for ( HostRoleCommand command : stages.get(0).getOrderedHostRoleCommands()) {
if (command.getHostName().equals(host) && command.getRole().name().equals(role)) {
command.setStatus(HostRoleStatus.TIMEDOUT);
}
}
return null;
}
}
).when(db).timeoutHostRole(anyString(),anyLong(),anyLong(),anyString());
doAnswer(new Answer(){
@Override public Void answer( InvocationOnMock invocation) throws Throwable {
Long requestId=(Long)invocation.getArguments()[0];
for ( Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for ( HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
if (command.getStatus() == HostRoleStatus.QUEUED || command.getStatus() == HostRoleStatus.IN_PROGRESS || command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
}
}
}
}
return null;
}
}
).when(db).abortOperation(anyLong());
ArgumentCaptor eventsCapture1=ArgumentCaptor.forClass(ServiceComponentHostEvent.class);
ArgumentCaptor eventsCapture2=ArgumentCaptor.forClass(ServiceComponentHostEvent.class);
ActionScheduler scheduler=new ActionScheduler(100,50000,db,aq,fsm,3,new HostsMap((String)null),unitOfWork,null,conf);
scheduler.setTaskTimeoutAdjustment(false);
int cycleCount=0;
while (!(stages.get(0).getHostRoleStatus(hostname1,"DATANODE").equals(HostRoleStatus.TIMEDOUT) && stages.get(0).getHostRoleStatus(hostname2,"NAMENODE").equals(HostRoleStatus.ABORTED)) && cycleCount++ <= MAX_CYCLE_ITERATIONS) {
scheduler.doWork();
}
Assert.assertEquals(HostRoleStatus.TIMEDOUT,stages.get(0).getHostRoleStatus(hostname1,"DATANODE"));
Assert.assertEquals(HostRoleStatus.ABORTED,stages.get(0).getHostRoleStatus(hostname2,"NAMENODE"));
verify(sch1,atLeastOnce()).handleEvent(eventsCapture1.capture());
verify(sch2,atLeastOnce()).handleEvent(eventsCapture2.capture());
List eventTypes=eventsCapture1.getAllValues();
eventTypes.addAll(eventsCapture2.getAllValues());
Assert.assertNotNull(eventTypes);
ServiceComponentHostOpFailedEvent datanodeFailedEvent=null;
ServiceComponentHostOpFailedEvent namenodeFailedEvent=null;
for ( ServiceComponentHostEvent eventType : eventTypes) {
if (eventType instanceof ServiceComponentHostOpFailedEvent) {
ServiceComponentHostOpFailedEvent event=(ServiceComponentHostOpFailedEvent)eventType;
if (event.getServiceComponentName().equals("DATANODE")) {
datanodeFailedEvent=event;
}
else if (event.getServiceComponentName().equals("NAMENODE")) {
namenodeFailedEvent=event;
}
}
}
Assert.assertNotNull("Datanode should be in Install failed state.",datanodeFailedEvent);
Assert.assertNotNull("Namenode should be in Install failed state.",namenodeFailedEvent);
}
InternalCallVerifier EqualityVerifier
@Test public void testCancelRequests() throws Exception {
ActionQueue aq=new ActionQueue();
Clusters fsm=mock(Clusters.class);
Cluster oneClusterMock=mock(Cluster.class);
Service serviceObj=mock(Service.class);
ServiceComponent scomp=mock(ServiceComponent.class);
ServiceComponentHost sch=mock(ServiceComponentHost.class);
UnitOfWork unitOfWork=mock(UnitOfWork.class);
when(fsm.getCluster(anyString())).thenReturn(oneClusterMock);
when(oneClusterMock.getService(anyString())).thenReturn(serviceObj);
when(serviceObj.getServiceComponent(anyString())).thenReturn(scomp);
when(scomp.getServiceComponentHost(anyString())).thenReturn(sch);
when(serviceObj.getCluster()).thenReturn(oneClusterMock);
HostEntity hostEntity=new HostEntity();
hostEntity.setHostName(hostname);
hostDAO.create(hostEntity);
HashMap hosts=new HashMap();
hosts.put(hostname,sch);
when(scomp.getServiceComponentHosts()).thenReturn(hosts);
long requestId=1;
final List stages=new ArrayList();
int namenodeCmdTaskId=1;
stages.add(getStageWithSingleTask(hostname,"cluster1",Role.NAMENODE,RoleCommand.START,Service.Type.HDFS,namenodeCmdTaskId,1,(int)requestId));
stages.add(getStageWithSingleTask(hostname,"cluster1",Role.DATANODE,RoleCommand.START,Service.Type.HDFS,2,2,(int)requestId));
Host host=mock(Host.class);
when(fsm.getHost(anyString())).thenReturn(host);
when(host.getState()).thenReturn(HostState.HEALTHY);
when(host.getHostName()).thenReturn(hostname);
ActionDBAccessor db=mock(ActionDBAccessor.class);
RequestEntity request=mock(RequestEntity.class);
when(request.isExclusive()).thenReturn(false);
when(db.getRequestEntity(anyLong())).thenReturn(request);
when(db.getCommandsInProgressCount()).thenReturn(stages.size());
when(db.getStagesInProgress()).thenReturn(stages);
List requestTasks=new ArrayList();
for ( Stage stage : stages) {
requestTasks.addAll(stage.getOrderedHostRoleCommands());
}
when(db.getRequestTasks(anyLong())).thenReturn(requestTasks);
when(db.getAllStages(anyLong())).thenReturn(stages);
doAnswer(new Answer(){
@Override public Void answer( InvocationOnMock invocation) throws Throwable {
List reports=(List)invocation.getArguments()[0];
for ( CommandReport report : reports) {
String actionId=report.getActionId();
long[] requestStageIds=StageUtils.getRequestStage(actionId);
Long requestId=requestStageIds[0];
Long stageId=requestStageIds[1];
Long id=report.getTaskId();
for ( Stage stage : stages) {
if (requestId.equals(stage.getRequestId()) && stageId.equals(stage.getStageId())) {
for ( HostRoleCommand hostRoleCommand : stage.getOrderedHostRoleCommands()) {
if (hostRoleCommand.getTaskId() == id) {
hostRoleCommand.setStatus(HostRoleStatus.valueOf(report.getStatus()));
}
}
}
}
}
return null;
}
}
).when(db).updateHostRoleStates(anyCollectionOf(CommandReport.class));
when(db.getTask(anyLong())).thenAnswer(new Answer(){
@Override public Object answer( InvocationOnMock invocation) throws Throwable {
Long taskId=(Long)invocation.getArguments()[0];
for ( Stage stage : stages) {
for ( HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
if (taskId.equals(command.getTaskId())) {
return command;
}
}
}
return null;
}
}
);
doAnswer(new Answer(){
@Override public Void answer( InvocationOnMock invocation) throws Throwable {
Long requestId=(Long)invocation.getArguments()[0];
for ( Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for ( HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
if (command.getStatus() == HostRoleStatus.QUEUED || command.getStatus() == HostRoleStatus.IN_PROGRESS || command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
}
}
}
}
return null;
}
}
).when(db).abortOperation(anyLong());
Properties properties=new Properties();
Configuration conf=new Configuration(properties);
ActionScheduler scheduler=new ActionScheduler(100,50,db,aq,fsm,3,new HostsMap((String)null),unitOfWork,null,conf);
scheduler.doWork();
String reason="Some reason";
scheduler.scheduleCancellingRequest(requestId,reason);
scheduler.doWork();
Assert.assertEquals(HostRoleStatus.ABORTED,stages.get(0).getHostRoleStatus(hostname,"NAMENODE"));
Assert.assertEquals(HostRoleStatus.ABORTED,stages.get(1).getHostRoleStatus(hostname,"DATANODE"));
Assert.assertEquals(aq.size(hostname),1);
CancelCommand cancelCommand=(CancelCommand)aq.dequeue(hostname);
Assert.assertEquals(cancelCommand.getTargetTaskId(),namenodeCmdTaskId);
Assert.assertEquals(cancelCommand.getReason(),reason);
}
IterativeVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that the whole request is aborted when there are no QUEUED tasks for a role and
* success factor is not met. As long as there is one QUEUED task the request is not
* aborted.
* @throws Exception
*/
@Test public void testRequestAbortsOnlyWhenNoQueuedTaskAndSuccessFactorUnmet() throws Exception {
ActionQueue aq=new ActionQueue();
Clusters fsm=mock(Clusters.class);
Cluster oneClusterMock=mock(Cluster.class);
Service serviceObj=mock(Service.class);
ServiceComponent scomp=mock(ServiceComponent.class);
ServiceComponentHost sch=mock(ServiceComponentHost.class);
UnitOfWork unitOfWork=mock(UnitOfWork.class);
when(fsm.getCluster(anyString())).thenReturn(oneClusterMock);
when(oneClusterMock.getService(anyString())).thenReturn(serviceObj);
when(serviceObj.getServiceComponent(anyString())).thenReturn(scomp);
when(scomp.getServiceComponentHost(anyString())).thenReturn(sch);
when(serviceObj.getCluster()).thenReturn(oneClusterMock);
String host1="host1";
String host2="host2";
Host host=mock(Host.class);
HashMap hosts=new HashMap();
hosts.put(host1,sch);
hosts.put(host2,sch);
when(scomp.getServiceComponentHosts()).thenReturn(hosts);
when(fsm.getHost(anyString())).thenReturn(host);
when(host.getState()).thenReturn(HostState.HEALTHY);
when(host.getHostName()).thenReturn(host1);
HostEntity hostEntity1=new HostEntity();
HostEntity hostEntity2=new HostEntity();
hostEntity1.setHostName(host1);
hostEntity2.setHostName(host2);
hostDAO.create(hostEntity1);
hostDAO.create(hostEntity2);
final List stages=new ArrayList();
long now=System.currentTimeMillis();
Stage stage=stageFactory.createNew(1,"/tmp","cluster1",1L,"testRequestFailureBasedOnSuccessFactor",CLUSTER_HOST_INFO,"","");
stage.setStageId(1);
addHostRoleExecutionCommand(now,stage,Role.SQOOP,Service.Type.SQOOP,RoleCommand.INSTALL,host1,"cluster1");
addHostRoleExecutionCommand(now,stage,Role.OOZIE_CLIENT,Service.Type.OOZIE,RoleCommand.INSTALL,host1,"cluster1");
addHostRoleExecutionCommand(now,stage,Role.MAPREDUCE_CLIENT,Service.Type.MAPREDUCE,RoleCommand.INSTALL,host1,"cluster1");
addHostRoleExecutionCommand(now,stage,Role.HBASE_CLIENT,Service.Type.HBASE,RoleCommand.INSTALL,host1,"cluster1");
addHostRoleExecutionCommand(now,stage,Role.GANGLIA_MONITOR,Service.Type.GANGLIA,RoleCommand.INSTALL,host1,"cluster1");
addHostRoleExecutionCommand(now,stage,Role.HBASE_CLIENT,Service.Type.HBASE,RoleCommand.INSTALL,host2,"cluster1");
addHostRoleExecutionCommand(now,stage,Role.GANGLIA_MONITOR,Service.Type.GANGLIA,RoleCommand.INSTALL,host2,"cluster1");
stages.add(stage);
HostRoleStatus[] statusesAtIterOne={HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED};
for (int index=0; index < stage.getOrderedHostRoleCommands().size(); index++) {
stage.getOrderedHostRoleCommands().get(index).setTaskId(index + 1);
stage.getOrderedHostRoleCommands().get(index).setStatus(statusesAtIterOne[index]);
}
stage.setLastAttemptTime(host1,Role.SQOOP.toString(),now);
stage.setLastAttemptTime(host1,Role.MAPREDUCE_CLIENT.toString(),now);
stage.setLastAttemptTime(host1,Role.OOZIE_CLIENT.toString(),now);
stage.setLastAttemptTime(host1,Role.GANGLIA_MONITOR.toString(),now);
stage.setLastAttemptTime(host1,Role.HBASE_CLIENT.toString(),now);
stage.setLastAttemptTime(host2,Role.GANGLIA_MONITOR.toString(),now);
stage.setLastAttemptTime(host2,Role.HBASE_CLIENT.toString(),now);
ActionDBAccessor db=mock(ActionDBAccessor.class);
RequestEntity request=mock(RequestEntity.class);
when(request.isExclusive()).thenReturn(false);
when(db.getRequestEntity(anyLong())).thenReturn(request);
when(db.getCommandsInProgressCount()).thenReturn(stages.size());
when(db.getStagesInProgress()).thenReturn(stages);
doAnswer(new Answer(){
@Override public Void answer( InvocationOnMock invocation) throws Throwable {
String host=(String)invocation.getArguments()[0];
Long requestId=(Long)invocation.getArguments()[1];
Long stageId=(Long)invocation.getArguments()[2];
String role=(String)invocation.getArguments()[3];
CommandReport commandReport=(CommandReport)invocation.getArguments()[4];
for ( Stage stage : stages) {
if (requestId.equals(stage.getRequestId()) && stageId.equals(stage.getStageId())) {
HostRoleCommand command=stage.getHostRoleCommand(host,role);
command.setStatus(HostRoleStatus.valueOf(commandReport.getStatus()));
}
}
return null;
}
}
).when(db).updateHostRoleState(anyString(),anyLong(),anyLong(),anyString(),any(CommandReport.class));
when(db.getTask(anyLong())).thenAnswer(new Answer(){
@Override public Object answer( InvocationOnMock invocation) throws Throwable {
Long taskId=(Long)invocation.getArguments()[0];
for ( Stage stage : stages) {
for ( HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
if (taskId.equals(command.getTaskId())) {
return command;
}
}
}
return null;
}
}
);
doAnswer(new Answer(){
@Override public Void answer( InvocationOnMock invocation) throws Throwable {
Long requestId=(Long)invocation.getArguments()[0];
for ( Stage stage : stages) {
if (requestId.equals(stage.getRequestId())) {
for ( HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
if (command.getStatus() == HostRoleStatus.QUEUED || command.getStatus() == HostRoleStatus.IN_PROGRESS || command.getStatus() == HostRoleStatus.PENDING) {
command.setStatus(HostRoleStatus.ABORTED);
}
}
}
}
return null;
}
}
).when(db).abortOperation(anyLong());
Properties properties=new Properties();
Configuration conf=new Configuration(properties);
ActionScheduler scheduler=new ActionScheduler(100,10000,db,aq,fsm,3,new HostsMap((String)null),unitOfWork,null,conf);
scheduler.doWork();
HostRoleStatus[] expectedStatusesAtIterOne={HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED};
for (int index=0; index < stage.getOrderedHostRoleCommands().size(); index++) {
log.info(stage.getOrderedHostRoleCommands().get(index).toString());
Assert.assertEquals(expectedStatusesAtIterOne[index],stage.getOrderedHostRoleCommands().get(index).getStatus());
}
HostRoleStatus[] statusesAtIterTwo={HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.QUEUED,HostRoleStatus.COMPLETED};
for (int index=0; index < stage.getOrderedHostRoleCommands().size(); index++) {
stage.getOrderedHostRoleCommands().get(index).setStatus(statusesAtIterTwo[index]);
}
scheduler.doWork();
HostRoleStatus[] expectedStatusesAtIterTwo={HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.QUEUED,HostRoleStatus.COMPLETED};
for (int index=0; index < stage.getOrderedHostRoleCommands().size(); index++) {
log.info(stage.getOrderedHostRoleCommands().get(index).toString());
Assert.assertEquals(expectedStatusesAtIterTwo[index],stage.getOrderedHostRoleCommands().get(index).getStatus());
}
HostRoleStatus[] statusesAtIterThree={HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.QUEUED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.COMPLETED};
for (int index=0; index < stage.getOrderedHostRoleCommands().size(); index++) {
stage.getOrderedHostRoleCommands().get(index).setStatus(statusesAtIterThree[index]);
}
scheduler.doWork();
HostRoleStatus[] expectedStatusesAtIterThree={HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.COMPLETED};
for (int index=0; index < stage.getOrderedHostRoleCommands().size(); index++) {
log.info(stage.getOrderedHostRoleCommands().get(index).toString());
Assert.assertEquals(expectedStatusesAtIterThree[index],stage.getOrderedHostRoleCommands().get(index).getStatus());
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* This test sends a new action to the action scheduler and verifies that the action
* shows up in the action queue.
*/
@Test public void testActionSchedule() throws Exception {
Type type=new TypeToken>>(){
}
.getType();
Map> clusterHostInfo=StageUtils.getGson().fromJson(CLUSTER_HOST_INFO,type);
ActionQueue aq=new ActionQueue();
Properties properties=new Properties();
Configuration conf=new Configuration(properties);
Clusters fsm=mock(Clusters.class);
Cluster oneClusterMock=mock(Cluster.class);
Service serviceObj=mock(Service.class);
ServiceComponent scomp=mock(ServiceComponent.class);
ServiceComponentHost sch=mock(ServiceComponentHost.class);
UnitOfWork unitOfWork=mock(UnitOfWork.class);
when(fsm.getCluster(anyString())).thenReturn(oneClusterMock);
when(fsm.getClusterById(anyLong())).thenReturn(oneClusterMock);
when(oneClusterMock.getService(anyString())).thenReturn(serviceObj);
when(oneClusterMock.getClusterId()).thenReturn(Long.valueOf(1L));
when(serviceObj.getServiceComponent(anyString())).thenReturn(scomp);
when(scomp.getServiceComponentHost(anyString())).thenReturn(sch);
when(serviceObj.getCluster()).thenReturn(oneClusterMock);
Host host=mock(Host.class);
HashMap hosts=new HashMap();
hosts.put(hostname,sch);
HostEntity hostEntity=new HostEntity();
hostEntity.setHostName(hostname);
hostDAO.merge(hostEntity);
when(scomp.getServiceComponentHosts()).thenReturn(hosts);
when(fsm.getHost(anyString())).thenReturn(host);
when(host.getState()).thenReturn(HostState.HEALTHY);
when(host.getHostName()).thenReturn(hostname);
ActionDBAccessor db=mock(ActionDBAccessorImpl.class);
List stages=new ArrayList();
Stage s=StageUtils.getATestStage(1,977,hostname,CLUSTER_HOST_INFO,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
stages.add(s);
when(db.getCommandsInProgressCount()).thenReturn(stages.size());
when(db.getStagesInProgress()).thenReturn(stages);
RequestEntity request=mock(RequestEntity.class);
when(request.isExclusive()).thenReturn(false);
when(db.getRequestEntity(anyLong())).thenReturn(request);
ActionScheduler scheduler=new ActionScheduler(100,5,db,aq,fsm,10000,new HostsMap((String)null),unitOfWork,null,conf);
scheduler.setTaskTimeoutAdjustment(false);
List ac=waitForQueueSize(hostname,aq,1,scheduler);
assertTrue(ac.get(0) instanceof ExecutionCommand);
assertEquals("1-977",((ExecutionCommand)(ac.get(0))).getCommandId());
assertEquals(clusterHostInfo,((ExecutionCommand)(ac.get(0))).getClusterHostInfo());
ac=waitForQueueSize(hostname,aq,1,scheduler);
assertTrue(ac.get(0) instanceof ExecutionCommand);
assertEquals("1-977",((ExecutionCommand)(ac.get(0))).getCommandId());
assertEquals(clusterHostInfo,((ExecutionCommand)(ac.get(0))).getClusterHostInfo());
s.setHostRoleStatus(hostname,"NAMENODE",HostRoleStatus.COMPLETED);
ac=aq.dequeueAll(hostname);
ac=waitForQueueSize(hostname,aq,0,scheduler);
}
InternalCallVerifier BooleanVerifier
@Test public void testSuccessCriteria(){
RoleStats rs1=new RoleStats(1,(float)0.5);
rs1.numSucceeded=1;
assertTrue(rs1.isSuccessFactorMet());
rs1.numSucceeded=0;
assertFalse(rs1.isSuccessFactorMet());
RoleStats rs2=new RoleStats(2,(float)0.5);
rs2.numSucceeded=1;
assertTrue(rs2.isSuccessFactorMet());
RoleStats rs3=new RoleStats(3,(float)0.5);
rs3.numSucceeded=2;
assertTrue(rs2.isSuccessFactorMet());
rs3.numSucceeded=1;
assertFalse(rs3.isSuccessFactorMet());
RoleStats rs4=new RoleStats(3,(float)1.0);
rs4.numSucceeded=2;
assertFalse(rs3.isSuccessFactorMet());
}
Class: org.apache.ambari.server.actionmanager.TestStage InternalCallVerifier EqualityVerifier
@Test public void testGetRequestContext(){
Stage stage=stageFactory.createNew(1,"/logDir","c1",1L,"My Context",CLUSTER_HOST_INFO,"","");
assertEquals("My Context",stage.getRequestContext());
assertEquals(CLUSTER_HOST_INFO,stage.getClusterHostInfo());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testTaskTimeout(){
Stage s=StageUtils.getATestStage(1,1,"h1",CLUSTER_HOST_INFO,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
s.addHostRoleExecutionCommand("h1",Role.DATANODE,RoleCommand.INSTALL,null,"c1","HDFS",false,false);
s.addHostRoleExecutionCommand("h1",Role.HBASE_MASTER,RoleCommand.INSTALL,null,"c1","HBASE",false,false);
for ( ExecutionCommandWrapper wrapper : s.getExecutionCommands("h1")) {
Map commandParams=new TreeMap();
commandParams.put(ExecutionCommand.KeyNames.COMMAND_TIMEOUT,"600");
wrapper.getExecutionCommand().setCommandParams(commandParams);
}
assertEquals(3 * 600000,s.getStageTimeout());
}
Class: org.apache.ambari.server.agent.AgentHostInfoTest InternalCallVerifier EqualityVerifier
@Test public void testDeserializeHostInfo() throws JsonParseException, JsonMappingException, IOException {
String hostinfo="{\"architecture\": \"x86_64\", " + "\"augeasversion\": \"0.10.0\"," + "\"domain\": \"test.com\", "+ "\"facterversion\": \"1.6.10\","+ "\"fqdn\": \"dev.test.com\", "+ "\"hardwareisa\": \"x86_64\", "+ "\"hardwaremodel\": \"x86_64\","+ "\"hostname\": \"dev\", "+ "\"id\": \"root\", "+ "\"interfaces\": \"eth0,lo\", "+ "\"ipaddress\": \"10.0.2.15\","+ "\"ipaddress_eth0\": \"10.0.2.15\","+ "\"ipaddress_lo\": \"127.0.0.1\","+ "\"is_virtual\": true,"+ "\"kernel\": \"Linux\", "+ "\"kernelmajversion\": \"2.6\","+ "\"kernelrelease\": \"2.6.18-238.12.1.el5\","+ "\"kernelversion\": \"2.6.18\", "+ "\"lsbdistcodename\": \"Final\","+ "\"lsbdistdescription\": \"CentOS release 5.8 (Final)\","+ "\"lsbdistid\": \"CentOS\", "+ "\"lsbdistrelease\": \"5.8\", "+ "\"lsbmajdistrelease\": \"5\","+ "\"macaddress\": \"08:00:27:D2:59:B2\", "+ "\"macaddress_eth0\": \"08:00:27:D2:59:B2\","+ "\"manufacturer\": \"innotek GmbH\","+ "\"memoryfree\": 2453667,"+ "\"memorysize\": 3051356, "+ "\"memorytotal\": 3051356,"+ "\"netmask\": \"255.255.255.0\"}";
ObjectMapper mapper=new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
HostInfo info=mapper.readValue(hostinfo,HostInfo.class);
Assert.assertEquals(info.getMemoryTotal(),3051356L);
Assert.assertEquals(info.getKernel(),"Linux");
Assert.assertEquals(info.getFQDN(),"dev.test.com");
Assert.assertEquals(info.getAgentUserId(),"root");
Assert.assertEquals(info.getMemorySize(),3051356L);
Assert.assertEquals(info.getArchitecture(),"x86_64");
}
Class: org.apache.ambari.server.agent.AgentResourceTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void deserializeClasses(){
String DirectoryJSON="[{name:'/var/lib', type:'directory'},{name:'b', type:'directory'}]";
String PackageDetailJSON="[{name:'abc', version:'2.3', repoName:'HDP'},{name:'abc', version:'3.3', repoName:'HDP-epel'}]";
String ExistingUserJSON="[{name:'hdfs', homeDir:'/var/lib/hadoop', status:''}, " + "{name:'ambari_qa', homeDir:'/var/home/ambari_qa',status:'None'}]";
String JavaProcJSON="[{user:'root', pid:'355', hadoop:'True', command:'cmd'}, " + "{user:'hdfs', pid:'325', hadoop:'False', command:'cmd = 2'}]";
String AlternativeJSON="[{name:'/etc/alternatives/hdfs-conf', target:'/etc/hadoop/conf.dist'}, " + "{name:'abc', target:'def'}]";
String AgentEnvJSON="{\"alternatives\": " + AlternativeJSON + ", \"existingUsers\": "+ ExistingUserJSON+ ", \"umask\": \"18\", \"installedPackages\": "+ PackageDetailJSON+ ", \"stackFoldersAndFiles\": "+ DirectoryJSON+ ", \"firewallRunning\": \"true\", \"firewallName\": \"iptables\", \"transparentHugePage\": \"never\"}";
AgentEnv.Directory[] dirs=getJsonFormString(DirectoryJSON,AgentEnv.Directory[].class);
Assert.assertEquals("/var/lib",dirs[0].getName());
Assert.assertEquals("directory",dirs[1].getType());
AgentEnv.PackageDetail[] pkgs=getJsonFormString(PackageDetailJSON,AgentEnv.PackageDetail[].class);
Assert.assertEquals("abc",pkgs[0].getName());
Assert.assertEquals("HDP",pkgs[0].getRepoName());
Assert.assertEquals("3.3",pkgs[1].getVersion());
AgentEnv.ExistingUser[] users=getJsonFormString(ExistingUserJSON,AgentEnv.ExistingUser[].class);
Assert.assertEquals("hdfs",users[0].getUserName());
Assert.assertEquals("/var/lib/hadoop",users[0].getUserHomeDir());
Assert.assertEquals("None",users[1].getUserStatus());
AgentEnv.JavaProc[] procs=getJsonFormString(JavaProcJSON,AgentEnv.JavaProc[].class);
Assert.assertEquals("root",procs[0].getUser());
Assert.assertEquals(355,procs[0].getPid());
Assert.assertEquals("cmd = 2",procs[1].getCommand());
Assert.assertEquals(false,procs[1].isHadoop());
AgentEnv.Alternative[] alternatives=getJsonFormString(AlternativeJSON,AgentEnv.Alternative[].class);
Assert.assertEquals("/etc/alternatives/hdfs-conf",alternatives[0].getName());
Assert.assertEquals("/etc/hadoop/conf.dist",alternatives[0].getTarget());
Assert.assertEquals("abc",alternatives[1].getName());
Assert.assertEquals("def",alternatives[1].getTarget());
AgentEnv agentEnv=getJsonFormString(AgentEnvJSON,AgentEnv.class);
Assert.assertTrue(18 == agentEnv.getUmask());
Assert.assertEquals("never",agentEnv.getTransparentHugePage());
Assert.assertTrue(Boolean.TRUE == agentEnv.getFirewallRunning());
Assert.assertEquals("iptables",agentEnv.getFirewallName());
Assert.assertEquals("/etc/alternatives/hdfs-conf",agentEnv.getAlternatives()[0].getName());
Assert.assertEquals("/etc/hadoop/conf.dist",agentEnv.getAlternatives()[0].getTarget());
Assert.assertEquals("abc",agentEnv.getAlternatives()[1].getName());
Assert.assertEquals("def",agentEnv.getAlternatives()[1].getTarget());
Assert.assertEquals("abc",agentEnv.getInstalledPackages()[0].getName());
Assert.assertEquals("HDP",agentEnv.getInstalledPackages()[0].getRepoName());
Assert.assertEquals("3.3",agentEnv.getInstalledPackages()[1].getVersion());
Assert.assertEquals("hdfs",agentEnv.getExistingUsers()[0].getUserName());
Assert.assertEquals("/var/lib/hadoop",agentEnv.getExistingUsers()[0].getUserHomeDir());
Assert.assertEquals("None",agentEnv.getExistingUsers()[1].getUserStatus());
Assert.assertEquals("/var/lib",agentEnv.getStackFoldersAndFiles()[0].getName());
Assert.assertEquals("directory",agentEnv.getStackFoldersAndFiles()[1].getType());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void agentHeartBeatWithEnv() throws UniformInterfaceException, JSONException {
HeartBeatResponse response;
ClientConfig clientConfig=new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
client=Client.create(clientConfig);
WebResource webResource=client.resource(String.format("http://localhost:%d/heartbeat/dummyhost",getTestPort()));
response=webResource.type(MediaType.APPLICATION_JSON).post(HeartBeatResponse.class,createDummyHeartBeatWithAgentEnv());
LOG.info("Returned from Server: " + " response=" + response);
Assert.assertEquals(response.getResponseId(),0L);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void agentComponents(){
ComponentsResponse response;
ClientConfig clientConfig=new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
client=Client.create(clientConfig);
WebResource webResource=client.resource(String.format("http://localhost:%d/components/dummycluster",getTestPort()));
response=webResource.get(ComponentsResponse.class);
Assert.assertEquals(response.getClusterName(),"dummycluster");
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void agentHeartBeat() throws UniformInterfaceException, JSONException {
HeartBeatResponse response;
ClientConfig clientConfig=new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
client=Client.create(clientConfig);
WebResource webResource=client.resource(String.format("http://localhost:%d/heartbeat/dummyhost",getTestPort()));
response=webResource.type(MediaType.APPLICATION_JSON).post(HeartBeatResponse.class,createDummyHeartBeat());
LOG.info("Returned from Server: " + " response=" + response);
Assert.assertEquals(response.getResponseId(),0L);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void agentRegistration() throws UniformInterfaceException, JSONException {
RegistrationResponse response;
ClientConfig clientConfig=new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
client=Client.create(clientConfig);
WebResource webResource=client.resource(String.format("http://localhost:%d/register/dummyhost",getTestPort()));
response=webResource.type(MediaType.APPLICATION_JSON).post(RegistrationResponse.class,createDummyJSONRegister());
LOG.info("Returned from Server responce=" + response);
Assert.assertEquals(response.getResponseStatus(),RegistrationStatus.OK);
}
Class: org.apache.ambari.server.agent.TestActionQueue IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConcurrentOperations() throws InterruptedException {
ActionQueue aq=new ActionQueue();
String[] hosts=new String[]{"h0","h1","h2","h3","h4","h5","h6","h7","h8","h9"};
ActionQueueOperation[] enqueOperators=new ActionQueueOperation[threadCount];
ActionQueueOperation[] dequeOperators=new ActionQueueOperation[threadCount];
ActionQueueOperation[] dequeAllOperators=new ActionQueueOperation[threadCount];
List producers=new ArrayList();
List consumers=new ArrayList();
for (int i=0; i < threadCount; i++) {
dequeOperators[i]=new ActionQueueOperation(aq,hosts,ActionQueueOperation.OpType.DEQUEUE);
Thread t=new Thread(dequeOperators[i]);
consumers.add(t);
t.start();
}
for (int i=0; i < threadCount; i++) {
enqueOperators[i]=new ActionQueueOperation(aq,hosts,ActionQueueOperation.OpType.ENQUEUE);
Thread t=new Thread(enqueOperators[i]);
producers.add(t);
t.start();
}
for (int i=0; i < threadCount; i++) {
dequeAllOperators[i]=new ActionQueueOperation(aq,hosts,ActionQueueOperation.OpType.DEQUEUEALL);
Thread t=new Thread(dequeAllOperators[i]);
consumers.add(t);
t.start();
}
Thread.sleep(100);
for (int i=0; i < threadCount; i++) {
enqueOperators[i].stop();
}
for ( Thread producer : producers) {
producer.join();
}
boolean allDequeued=false;
while (!allDequeued) {
Thread.sleep(10);
allDequeued=true;
for ( String host : hosts) {
if (aq.size(host) > 0) {
allDequeued=false;
break;
}
}
}
for (int i=0; i < threadCount; i++) {
dequeOperators[i].stop();
dequeAllOperators[i].stop();
}
for ( Thread consumer : consumers) {
consumer.join();
}
for (int h=0; h < hosts.length; h++) {
long opsEnqueued=0;
long opsDequeued=0;
for (int i=0; i < threadCount; i++) {
opsEnqueued+=enqueOperators[i].getOpCounts()[h];
opsDequeued+=dequeOperators[i].getOpCounts()[h];
opsDequeued+=dequeAllOperators[i].getOpCounts()[h];
}
assertTrue(opsEnqueued != 0);
assertEquals(0,aq.size(hosts[h]));
LOG.info("Host: " + hosts[h] + ", opsEnqueued: "+ opsEnqueued+ ", opsDequeued: "+ opsDequeued);
assertEquals(opsDequeued,opsEnqueued);
}
}
InternalCallVerifier BooleanVerifier
@Test public void testConcurrentHostCheck() throws InterruptedException {
ActionQueue aq=new ActionQueue();
String[] hosts=new String[]{"h0","h1","h2","h3","h4"};
ActionQueueOperation[] hostCheckers=new ActionQueueOperation[threadCount];
ActionQueueOperation[] hostUpdaters=new ActionQueueOperation[threadCount];
List producers=new ArrayList();
List consumers=new ArrayList();
for (int i=0; i < threadCount; i++) {
hostCheckers[i]=new ActionQueueOperation(aq,hosts,ActionQueueOperation.OpType.CHECKPENDING);
Thread t=new Thread(hostCheckers[i]);
consumers.add(t);
t.start();
}
for (int i=0; i < threadCount; i++) {
hostUpdaters[i]=new ActionQueueOperation(aq,hosts,ActionQueueOperation.OpType.UPDATEHOSTLIST);
Thread t=new Thread(hostUpdaters[i]);
producers.add(t);
t.start();
}
Thread.sleep(100);
for (int i=0; i < threadCount; i++) {
hostUpdaters[i].stop();
}
for ( Thread producer : producers) {
producer.join();
}
for (int i=0; i < threadCount; i++) {
hostCheckers[i].stop();
}
for ( Thread consumer : consumers) {
consumer.join();
}
int totalChecks=0;
int totalUpdates=0;
for (int i=0; i < threadCount; i++) {
totalChecks+=hostUpdaters[i].getOpCounts()[0];
for (int h=0; h < hosts.length; h++) {
totalUpdates+=hostCheckers[i].getOpCounts()[h];
}
}
LOG.info("Report: totalChecks: " + totalChecks + ", totalUpdates: "+ totalUpdates);
HashSet hostsWithPendingtasks=new HashSet();
aq.updateListOfHostsWithPendingTask(hostsWithPendingtasks);
hostsWithPendingtasks.add("h1");
aq.updateListOfHostsWithPendingTask(hostsWithPendingtasks);
assertTrue(aq.hasPendingTask("h1"));
assertFalse(aq.hasPendingTask("h2"));
hostsWithPendingtasks.add("h1");
hostsWithPendingtasks.add("h2");
aq.updateListOfHostsWithPendingTask(hostsWithPendingtasks);
assertTrue(aq.hasPendingTask("h1"));
assertTrue(aq.hasPendingTask("h2"));
hostsWithPendingtasks.clear();
hostsWithPendingtasks.add("h2");
aq.updateListOfHostsWithPendingTask(hostsWithPendingtasks);
assertFalse(aq.hasPendingTask("h1"));
assertTrue(aq.hasPendingTask("h2"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testDequeueCommandType() throws Exception {
ActionQueue queue=new ActionQueue();
String c6401="c6401.ambari.apache.org";
String c6402="c6402.ambari.apache.org";
queue.enqueue(c6401,EasyMock.createMockBuilder(ExecutionCommand.class).createNiceMock());
queue.enqueue(c6401,EasyMock.createMockBuilder(StatusCommand.class).createNiceMock());
queue.enqueue(c6401,EasyMock.createMockBuilder(AlertDefinitionCommand.class).createNiceMock());
queue.enqueue(c6401,EasyMock.createMockBuilder(StatusCommand.class).createNiceMock());
queue.enqueue(c6401,EasyMock.createMockBuilder(AlertDefinitionCommand.class).createNiceMock());
queue.enqueue(c6401,EasyMock.createMockBuilder(StatusCommand.class).createNiceMock());
queue.enqueue(c6401,EasyMock.createMockBuilder(AlertDefinitionCommand.class).createNiceMock());
queue.enqueue(c6402,EasyMock.createMockBuilder(ExecutionCommand.class).createNiceMock());
queue.enqueue(c6402,EasyMock.createMockBuilder(StatusCommand.class).createNiceMock());
queue.enqueue(c6402,EasyMock.createMockBuilder(AlertDefinitionCommand.class).createNiceMock());
assertEquals(7,queue.size(c6401));
List commands=queue.dequeue(c6401,AgentCommandType.ALERT_DEFINITION_COMMAND);
assertNotNull(commands);
assertEquals(3,commands.size());
assertEquals(4,queue.size(c6401));
assertEquals(3,queue.size(c6402));
}
Class: org.apache.ambari.server.agent.TestHeartbeatHandler InternalCallVerifier BooleanVerifier
@Test public void testRegistrationAgentConfig() throws AmbariException, InvalidStateTransitionException {
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
HeartBeatHandler handler=new HeartBeatHandler(fsm,new ActionQueue(),am,injector);
clusters.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOsType);
reg.setHostname(DummyHostname1);
reg.setCurrentPingPort(DummyCurrentPingPort);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
reg.setPrefix(Configuration.PREFIX_DIR);
RegistrationResponse rr=handler.handleRegistration(reg);
Map config=rr.getAgentConfig();
assertFalse(config.isEmpty());
assertTrue(config.containsKey(Configuration.CHECK_REMOTE_MOUNTS_KEY));
assertTrue("false".equals(config.get(Configuration.CHECK_REMOTE_MOUNTS_KEY)));
assertTrue(config.containsKey(Configuration.CHECK_MOUNTS_TIMEOUT_KEY));
assertTrue("0".equals(config.get(Configuration.CHECK_MOUNTS_TIMEOUT_KEY)));
assertTrue("true".equals(config.get(Configuration.ENABLE_AUTO_AGENT_CACHE_UPDATE_KEY)));
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testLiveStatusUpdateAfterStopFailed() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.STARTED);
serviceComponentHost2.setState(State.STARTED);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
ArrayList componentStatuses=new ArrayList();
ComponentStatus componentStatus1=new ComponentStatus();
componentStatus1.setClusterName(DummyCluster);
componentStatus1.setServiceName(HDFS);
componentStatus1.setMessage(DummyHostStatus);
componentStatus1.setStatus(State.STARTED.name());
componentStatus1.setSecurityState(SecurityState.UNSECURED.name());
componentStatus1.setComponentName(DATANODE);
componentStatuses.add(componentStatus1);
ComponentStatus componentStatus2=new ComponentStatus();
componentStatus2.setClusterName(DummyCluster);
componentStatus2.setServiceName(HDFS);
componentStatus2.setMessage(DummyHostStatus);
componentStatus2.setStatus(State.INSTALLED.name());
componentStatus2.setSecurityState(SecurityState.UNSECURED.name());
componentStatus2.setComponentName(NAMENODE);
componentStatuses.add(componentStatus2);
hb.setComponentStatus(componentStatuses);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
State componentState1=serviceComponentHost1.getState();
State componentState2=serviceComponentHost2.getState();
assertEquals(State.STARTED,componentState1);
assertEquals(State.INSTALLED,componentState2);
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testComponentUpgradeInProgressReport() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(HDFS_CLIENT).persist();
hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
StackId stack130=new StackId("HDP-1.3.0");
StackId stack120=new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.UPGRADING);
serviceComponentHost2.setState(State.INSTALLING);
serviceComponentHost1.setStackVersion(stack120);
serviceComponentHost1.setDesiredStackVersion(stack130);
serviceComponentHost2.setStackVersion(stack120);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
CommandReport cr1=new CommandReport();
cr1.setActionId(StageUtils.getActionId(requestId,stageId));
cr1.setTaskId(1);
cr1.setClusterName(DummyCluster);
cr1.setServiceName(HDFS);
cr1.setRole(DATANODE);
cr1.setRoleCommand("INSTALL");
cr1.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr1.setStdErr("none");
cr1.setStdOut("dummy output");
cr1.setExitCode(777);
CommandReport cr2=new CommandReport();
cr2.setActionId(StageUtils.getActionId(requestId,stageId));
cr2.setTaskId(2);
cr2.setClusterName(DummyCluster);
cr2.setServiceName(HDFS);
cr2.setRole(NAMENODE);
cr2.setRoleCommand("INSTALL");
cr2.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr2.setStdErr("none");
cr2.setStdOut("dummy output");
cr2.setExitCode(777);
ArrayList reports=new ArrayList();
reports.add(cr1);
reports.add(cr2);
hb.setReports(reports);
ActionQueue aq=new ActionQueue();
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
assertEquals("State of SCH not change while operation is in progress",State.UPGRADING,serviceComponentHost1.getState());
assertEquals("Stack version of SCH should not change after in progress report",stack130,serviceComponentHost1.getDesiredStackVersion());
assertEquals("State of SCH not change while operation is in progress",State.INSTALLING,serviceComponentHost2.getState());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testComponentUpgradeFailReport() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(HDFS_CLIENT).persist();
hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
StackId stack130=new StackId("HDP-1.3.0");
StackId stack120=new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.UPGRADING);
serviceComponentHost2.setState(State.INSTALLING);
serviceComponentHost1.setStackVersion(stack120);
serviceComponentHost1.setDesiredStackVersion(stack130);
serviceComponentHost2.setStackVersion(stack120);
Stage s=stageFactory.createNew(requestId,"/a/b","cluster1",1L,"action manager test","clusterHostInfo","commandParamsStage","hostParamsStage");
s.setStageId(stageId);
s.addHostRoleExecutionCommand(DummyHostname1,Role.DATANODE,RoleCommand.UPGRADE,new ServiceComponentHostUpgradeEvent(Role.DATANODE.toString(),DummyHostname1,System.currentTimeMillis(),"HDP-1.3.0"),DummyCluster,"HDFS",false,false);
s.addHostRoleExecutionCommand(DummyHostname1,Role.NAMENODE,RoleCommand.INSTALL,new ServiceComponentHostInstallEvent(Role.NAMENODE.toString(),DummyHostname1,System.currentTimeMillis(),"HDP-1.3.0"),DummyCluster,"HDFS",false,false);
List stages=new ArrayList();
stages.add(s);
Request request=new Request(stages,clusters);
actionDBAccessor.persistActions(request);
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setTaskId(1);
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setStdErr("none");
cr.setStdOut("dummy output");
actionDBAccessor.updateHostRoleState(DummyHostname1,requestId,stageId,Role.DATANODE.name(),cr);
cr.setRole(NAMENODE);
cr.setTaskId(2);
actionDBAccessor.updateHostRoleState(DummyHostname1,requestId,stageId,Role.NAMENODE.name(),cr);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
CommandReport cr1=new CommandReport();
cr1.setActionId(StageUtils.getActionId(requestId,stageId));
cr1.setTaskId(1);
cr1.setClusterName(DummyCluster);
cr1.setServiceName(HDFS);
cr1.setRole(DATANODE);
cr1.setRoleCommand("INSTALL");
cr1.setStatus(HostRoleStatus.FAILED.toString());
cr1.setStdErr("none");
cr1.setStdOut("dummy output");
cr1.setExitCode(0);
CommandReport cr2=new CommandReport();
cr2.setActionId(StageUtils.getActionId(requestId,stageId));
cr2.setTaskId(2);
cr2.setClusterName(DummyCluster);
cr2.setServiceName(HDFS);
cr2.setRole(NAMENODE);
cr2.setRoleCommand("INSTALL");
cr2.setStatus(HostRoleStatus.FAILED.toString());
cr2.setStdErr("none");
cr2.setStdOut("dummy output");
cr2.setExitCode(0);
ArrayList reports=new ArrayList();
reports.add(cr1);
reports.add(cr2);
hb.setReports(reports);
ActionQueue aq=new ActionQueue();
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
assertEquals("State of SCH should change after fail report",State.UPGRADING,serviceComponentHost1.getState());
assertEquals("State of SCH should change after fail report",State.INSTALL_FAILED,serviceComponentHost2.getState());
assertEquals("Stack version of SCH should not change after fail report",stack120,serviceComponentHost1.getStackVersion());
assertEquals("Stack version of SCH should not change after fail report",stack130,serviceComponentHost1.getDesiredStackVersion());
assertEquals("Stack version of SCH should not change after fail report",State.INSTALL_FAILED,serviceComponentHost2.getState());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testStatusHeartbeat() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
hdfs.getServiceComponent(SECONDARY_NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost3=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(SECONDARY_NAMENODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLED);
serviceComponentHost1.setSecurityState(SecurityState.UNSECURED);
serviceComponentHost2.setState(State.INSTALLED);
serviceComponentHost2.setSecurityState(SecurityState.SECURING);
serviceComponentHost3.setState(State.STARTING);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
ArrayList componentStatuses=new ArrayList();
ComponentStatus componentStatus1=new ComponentStatus();
componentStatus1.setClusterName(DummyCluster);
componentStatus1.setServiceName(HDFS);
componentStatus1.setMessage(DummyHostStatus);
componentStatus1.setStatus(State.STARTED.name());
componentStatus1.setSecurityState(SecurityState.SECURED_KERBEROS.name());
componentStatus1.setComponentName(DATANODE);
componentStatuses.add(componentStatus1);
ComponentStatus componentStatus2=new ComponentStatus();
componentStatus2.setClusterName(DummyCluster);
componentStatus2.setServiceName(HDFS);
componentStatus2.setMessage(DummyHostStatus);
componentStatus2.setStatus(State.STARTED.name());
componentStatus2.setSecurityState(SecurityState.UNSECURED.name());
componentStatus2.setComponentName(SECONDARY_NAMENODE);
componentStatuses.add(componentStatus2);
hb.setComponentStatus(componentStatuses);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
State componentState1=serviceComponentHost1.getState();
State componentState2=serviceComponentHost2.getState();
State componentState3=serviceComponentHost3.getState();
assertEquals(State.STARTED,componentState1);
assertEquals(SecurityState.SECURED_KERBEROS,serviceComponentHost1.getSecurityState());
assertEquals(State.INSTALLED,componentState2);
assertEquals(SecurityState.SECURING,serviceComponentHost2.getSecurityState());
assertEquals(State.STARTED,componentState3);
assertEquals(SecurityState.UNSECURED,serviceComponentHost3.getSecurityState());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRegisterNewNode() throws AmbariException, InvalidStateTransitionException {
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
fsm.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
HeartBeatHandler handler=new HeartBeatHandler(fsm,new ActionQueue(),am,injector);
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS("redhat5");
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
reg.setPrefix(Configuration.PREFIX_DIR);
RegistrationResponse response=handler.handleRegistration(reg);
assertEquals(hostObject.getState(),HostState.HEALTHY);
assertEquals("redhat5",hostObject.getOsType());
assertEquals(RegistrationStatus.OK,response.getResponseStatus());
assertEquals(0,response.getResponseId());
assertEquals(reg.getPrefix(),hostObject.getPrefix());
assertTrue(response.getStatusCommands().isEmpty());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRegistrationPublicHostname() throws AmbariException, InvalidStateTransitionException {
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
HeartBeatHandler handler=new HeartBeatHandler(fsm,new ActionQueue(),am,injector);
clusters.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOsType);
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setPublicHostname(DummyHostname1 + "-public");
reg.setAgentVersion(metaInfo.getServerVersion());
handler.handleRegistration(reg);
assertEquals(hostObject.getState(),HostState.HEALTHY);
assertEquals(DummyOsType,hostObject.getOsType());
assertTrue(hostObject.getLastRegistrationTime() != 0);
assertEquals(hostObject.getLastHeartbeatTime(),hostObject.getLastRegistrationTime());
Host verifyHost=clusters.getHost(DummyHostname1);
assertEquals(verifyHost.getPublicHostName(),reg.getPublicHostname());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testOPFailedEventForAbortedTask() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
hdfs.getServiceComponent(SECONDARY_NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLING);
Stage s=stageFactory.createNew(1,"/a/b","cluster1",1L,"action manager test","clusterHostInfo","commandParamsStage","hostParamsStage");
s.setStageId(1);
s.addHostRoleExecutionCommand(DummyHostname1,Role.DATANODE,RoleCommand.INSTALL,new ServiceComponentHostInstallEvent(Role.DATANODE.toString(),DummyHostname1,System.currentTimeMillis(),"HDP-1.3.0"),DummyCluster,"HDFS",false,false);
List stages=new ArrayList();
stages.add(s);
Request request=new Request(stages,clusters);
actionDBAccessor.persistActions(request);
actionDBAccessor.abortHostRole(DummyHostname1,1,1,Role.DATANODE.name());
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(1,1));
cr.setTaskId(1);
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
cr.setRoleCommand("INSTALL");
cr.setStatus("FAILED");
cr.setStdErr("none");
cr.setStdOut("dummy output");
cr.setExitCode(777);
reports.add(cr);
hb.setReports(reports);
hb.setComponentStatus(new ArrayList());
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
State componentState1=serviceComponentHost1.getState();
assertEquals("Host state should still be installing",State.INSTALLING,componentState1);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test @SuppressWarnings("unchecked") public void testHeartbeatCustomStartStop() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
hdfs.getServiceComponent(SECONDARY_NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLED);
serviceComponentHost2.setState(State.STARTED);
serviceComponentHost1.setRestartRequired(true);
serviceComponentHost2.setRestartRequired(true);
HeartBeat hb=new HeartBeat();
hb.setResponseId(0);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setHostname(DummyHostname1);
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setServiceName(HDFS);
cr.setRoleCommand("CUSTOM_COMMAND");
cr.setCustomCommand("START");
cr.setTaskId(1);
cr.setRole(DATANODE);
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(215);
cr.setClusterName(DummyCluster);
CommandReport crn=new CommandReport();
crn.setActionId(StageUtils.getActionId(requestId,stageId));
crn.setServiceName(HDFS);
crn.setRoleCommand("CUSTOM_COMMAND");
crn.setCustomCommand("STOP");
crn.setTaskId(1);
crn.setRole(NAMENODE);
crn.setStatus("COMPLETED");
crn.setStdErr("");
crn.setStdOut("");
crn.setExitCode(215);
crn.setClusterName(DummyCluster);
reports.add(cr);
reports.add(crn);
hb.setReports(reports);
assertTrue(serviceComponentHost1.isRestartRequired());
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
State componentState1=serviceComponentHost1.getState();
assertEquals(State.STARTED,componentState1);
assertFalse(serviceComponentHost1.isRestartRequired());
State componentState2=serviceComponentHost2.getState();
assertEquals(State.INSTALLED,componentState2);
assertTrue(serviceComponentHost2.isRestartRequired());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testTaskInProgressHandling() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
hdfs.getServiceComponent(SECONDARY_NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLING);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setTaskId(1);
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
cr.setRoleCommand("INSTALL");
cr.setStatus("IN_PROGRESS");
cr.setStdErr("none");
cr.setStdOut("dummy output");
cr.setExitCode(777);
reports.add(cr);
hb.setReports(reports);
hb.setComponentStatus(new ArrayList());
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,RoleCommand.INSTALL);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
State componentState1=serviceComponentHost1.getState();
assertEquals("Host state should still be installing",State.INSTALLING,componentState1);
}
InternalCallVerifier EqualityVerifier
@Test public void testRegistrationRecoveryConfig() throws AmbariException, InvalidStateTransitionException {
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
HeartBeatHandler handler=new HeartBeatHandler(fsm,new ActionQueue(),am,injector);
clusters.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOsType);
reg.setHostname(DummyHostname1);
reg.setCurrentPingPort(DummyCurrentPingPort);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
reg.setPrefix(Configuration.PREFIX_DIR);
RegistrationResponse rr=handler.handleRegistration(reg);
RecoveryConfig rc=rr.getRecoveryConfig();
assertEquals(rc.getMaxCount(),"4");
assertEquals(rc.getType(),"FULL");
assertEquals(rc.getMaxLifetimeCount(),"10");
assertEquals(rc.getRetryGap(),"2");
assertEquals(rc.getWindowInMinutes(),"23");
rc=RecoveryConfig.getRecoveryConfig(new Configuration());
assertEquals(rc.getMaxCount(),"6");
assertEquals(rc.getType(),"DEFAULT");
assertEquals(rc.getMaxLifetimeCount(),"12");
assertEquals(rc.getRetryGap(),"5");
assertEquals(rc.getWindowInMinutes(),"60");
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test @SuppressWarnings("unchecked") public void testStatusHeartbeatWithVersion() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(HDFS_CLIENT).persist();
hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost3=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(HDFS_CLIENT).getServiceComponentHost(DummyHostname1);
StackId stack130=new StackId("HDP-1.3.0");
StackId stack120=new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.INSTALLED);
serviceComponentHost2.setState(State.STARTED);
serviceComponentHost3.setState(State.STARTED);
serviceComponentHost1.setStackVersion(stack130);
serviceComponentHost2.setStackVersion(stack120);
serviceComponentHost3.setStackVersion(stack120);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
hb.setAgentEnv(new AgentEnv());
hb.setMounts(new ArrayList());
ArrayList componentStatuses=new ArrayList();
ComponentStatus componentStatus1=createComponentStatus(DummyCluster,HDFS,DummyHostStatus,State.STARTED,SecurityState.UNSECURED,DATANODE,"{\"stackName\":\"HDP\",\"stackVersion\":\"1.3.0\"}");
ComponentStatus componentStatus2=createComponentStatus(DummyCluster,HDFS,DummyHostStatus,State.STARTED,SecurityState.UNSECURED,NAMENODE,"");
ComponentStatus componentStatus3=createComponentStatus(DummyCluster,HDFS,DummyHostStatus,State.INSTALLED,SecurityState.UNSECURED,HDFS_CLIENT,"{\"stackName\":\"HDP\",\"stackVersion\":\"1.3.0\"}");
componentStatuses.add(componentStatus1);
componentStatuses.add(componentStatus2);
componentStatuses.add(componentStatus3);
hb.setComponentStatus(componentStatuses);
ActionQueue aq=new ActionQueue();
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
assertEquals("Matching value " + serviceComponentHost1.getStackVersion(),stack130,serviceComponentHost1.getStackVersion());
assertEquals("Matching value " + serviceComponentHost2.getStackVersion(),stack120,serviceComponentHost2.getStackVersion());
assertEquals("Matching value " + serviceComponentHost3.getStackVersion(),stack130,serviceComponentHost3.getStackVersion());
assertTrue(hb.getAgentEnv().getHostHealth().getServerTimeStampAtReporting() >= hb.getTimestamp());
}
InternalCallVerifier EqualityVerifier
/**
* Tests the fact that when START and STOP commands are in progress, and heartbeat
* forces the host component state to STARTED or INSTALLED, there are no undesired
* side effects.
* @throws AmbariException
* @throws InvalidStateTransitionException
*/
@Test @SuppressWarnings("unchecked") public void testCommandReportOnHeartbeatUpdatedState() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLED);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setTaskId(1);
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setStdErr("none");
cr.setStdOut("dummy output");
cr.setExitCode(777);
cr.setRoleCommand("START");
reports.add(cr);
hb.setReports(reports);
hb.setComponentStatus(new ArrayList());
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
).anyTimes();
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.INSTALLED,State.INSTALLED,serviceComponentHost1.getState());
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(1);
cr.setStatus(HostRoleStatus.COMPLETED.toString());
cr.setExitCode(0);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.STARTED,State.STARTED,serviceComponentHost1.getState());
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(2);
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setRoleCommand("STOP");
cr.setExitCode(777);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.STARTED,State.STARTED,serviceComponentHost1.getState());
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(3);
cr.setStatus(HostRoleStatus.COMPLETED.toString());
cr.setExitCode(0);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.INSTALLED,State.INSTALLED,serviceComponentHost1.getState());
serviceComponentHost1.setState(State.STARTING);
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setExitCode(777);
cr.setRoleCommand("START");
hb.setResponseId(4);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.STARTING,State.STARTING,serviceComponentHost1.getState());
cr.setStatus(HostRoleStatus.COMPLETED.toString());
cr.setExitCode(0);
hb.setResponseId(5);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.STARTED,State.STARTED,serviceComponentHost1.getState());
serviceComponentHost1.setState(State.STOPPING);
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setExitCode(777);
cr.setRoleCommand("STOP");
hb.setResponseId(6);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.STOPPING,State.STOPPING,serviceComponentHost1.getState());
cr.setStatus(HostRoleStatus.COMPLETED.toString());
cr.setExitCode(0);
hb.setResponseId(7);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.INSTALLED,State.INSTALLED,serviceComponentHost1.getState());
}
InternalCallVerifier EqualityVerifier
@Test public void testComponents() throws AmbariException, InvalidStateTransitionException {
ComponentsResponse expected=new ComponentsResponse();
StackId dummyStackId=new StackId(DummyStackId);
Map> dummyComponents=new HashMap>();
Map dummyCategoryMap=new HashMap();
dummyCategoryMap.put("PIG","CLIENT");
dummyComponents.put("PIG",dummyCategoryMap);
dummyCategoryMap=new HashMap();
dummyCategoryMap.put("MAPREDUCE_CLIENT","CLIENT");
dummyCategoryMap.put("JOBTRACKER","MASTER");
dummyCategoryMap.put("TASKTRACKER","SLAVE");
dummyComponents.put("MAPREDUCE",dummyCategoryMap);
dummyCategoryMap=new HashMap();
dummyCategoryMap.put("DATANODE2","SLAVE");
dummyCategoryMap.put("NAMENODE","MASTER");
dummyCategoryMap.put("HDFS_CLIENT","CLIENT");
dummyCategoryMap.put("DATANODE1","SLAVE");
dummyCategoryMap.put("SECONDARY_NAMENODE","MASTER");
dummyCategoryMap.put("DATANODE","SLAVE");
dummyComponents.put("HDFS",dummyCategoryMap);
expected.setClusterName(DummyCluster);
expected.setStackName(dummyStackId.getStackName());
expected.setStackVersion(dummyStackId.getStackVersion());
expected.setComponents(dummyComponents);
getDummyCluster();
HeartBeatHandler handler=getHeartBeatHandler(getMockActionManager(),new ActionQueue());
ComponentsResponse actual=handler.handleComponents(DummyCluster);
if (log.isDebugEnabled()) {
log.debug(actual.toString());
}
assertEquals(expected.getClusterName(),actual.getClusterName());
assertEquals(expected.getStackName(),actual.getStackName());
assertEquals(expected.getStackVersion(),actual.getStackVersion());
assertEquals(expected.getComponents(),actual.getComponents());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test @SuppressWarnings("unchecked") public void testStatusHeartbeatWithAnnotation() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
ActionQueue aq=new ActionQueue();
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
ArrayList componentStatuses=new ArrayList();
hb.setComponentStatus(componentStatuses);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
).anyTimes();
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
HeartBeatResponse resp=handler.handleHeartBeat(hb);
Assert.assertFalse(resp.hasMappedComponents());
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INIT);
hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(1);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
hb.setComponentStatus(componentStatuses);
resp=handler.handleHeartBeat(hb);
Assert.assertTrue(resp.hasMappedComponents());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test @SuppressWarnings("unchecked") public void testHeartbeatCustomCommandWithConfigs() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
hdfs.getServiceComponent(SECONDARY_NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLED);
serviceComponentHost2.setState(State.INSTALLED);
HeartBeat hb=new HeartBeat();
hb.setResponseId(0);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setHostname(DummyHostname1);
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setServiceName(HDFS);
cr.setRoleCommand("CUSTOM_COMMAND");
cr.setCustomCommand("RESTART");
cr.setTaskId(1);
cr.setRole(DATANODE);
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(215);
cr.setClusterName(DummyCluster);
cr.setConfigurationTags(new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
);
CommandReport crn=new CommandReport();
crn.setActionId(StageUtils.getActionId(requestId,stageId));
crn.setServiceName(HDFS);
crn.setRoleCommand("CUSTOM_COMMAND");
crn.setCustomCommand("START");
crn.setTaskId(1);
crn.setRole(NAMENODE);
crn.setStatus("COMPLETED");
crn.setStdErr("");
crn.setStdOut("");
crn.setExitCode(215);
crn.setClusterName(DummyCluster);
crn.setConfigurationTags(new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
);
reports.add(cr);
reports.add(crn);
hb.setReports(reports);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
Assert.assertNotNull(serviceComponentHost1.getActualConfigs());
Assert.assertEquals(serviceComponentHost1.getActualConfigs().size(),1);
Assert.assertNotNull(serviceComponentHost2.getActualConfigs());
Assert.assertEquals(serviceComponentHost2.getActualConfigs().size(),1);
}
InternalCallVerifier NullVerifier
@Test public void testInstallPackagesWithVersion() throws Exception {
EventBusSynchronizer.synchronizeAmbariEventPublisher(injector);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(Collections.singletonList(command)).anyTimes();
replay(am);
Cluster cluster=getDummyCluster();
HeartBeatHandler handler=getHeartBeatHandler(am,new ActionQueue());
HeartBeat hb=new HeartBeat();
JsonObject json=new JsonObject();
json.addProperty("actual_version","2.2.1.0-2222");
json.addProperty("package_installation_result","SUCCESS");
json.addProperty("installed_repository_version","0.1");
json.addProperty("stack_id",cluster.getDesiredStackVersion().getStackId());
CommandReport cmdReport=new CommandReport();
cmdReport.setActionId(StageUtils.getActionId(requestId,stageId));
cmdReport.setTaskId(1);
cmdReport.setCustomCommand("install_packages");
cmdReport.setStructuredOut(json.toString());
cmdReport.setRoleCommand(RoleCommand.ACTIONEXECUTE.name());
cmdReport.setStatus(HostRoleStatus.COMPLETED.name());
cmdReport.setRole("install_packages");
cmdReport.setClusterName(DummyCluster);
hb.setReports(Collections.singletonList(cmdReport));
hb.setTimestamp(0L);
hb.setResponseId(0);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setHostname(DummyHostname1);
hb.setComponentStatus(new ArrayList());
StackId stackId=new StackId("HDP","0.1");
RepositoryVersionDAO dao=injector.getInstance(RepositoryVersionDAO.class);
RepositoryVersionEntity entity=dao.findByStackAndVersion(stackId,"0.1");
Assert.assertNotNull(entity);
handler.handleHeartBeat(hb);
entity=dao.findByStackAndVersion(stackId,"0.1");
Assert.assertNull(entity);
entity=dao.findByStackAndVersion(stackId,"2.2.1.0-2222");
Assert.assertNotNull(entity);
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testCommandStatusProcesses() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1).setState(State.STARTED);
ActionQueue aq=new ActionQueue();
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
List> procs=new ArrayList>();
Map proc1info=new HashMap();
proc1info.put("name","a");
proc1info.put("status","RUNNING");
procs.add(proc1info);
Map proc2info=new HashMap();
proc2info.put("name","b");
proc2info.put("status","NOT_RUNNING");
procs.add(proc2info);
Map extra=new HashMap();
extra.put("processes",procs);
ArrayList componentStatuses=new ArrayList();
ComponentStatus componentStatus1=new ComponentStatus();
componentStatus1.setClusterName(DummyCluster);
componentStatus1.setServiceName(HDFS);
componentStatus1.setMessage(DummyHostStatus);
componentStatus1.setStatus(State.STARTED.name());
componentStatus1.setSecurityState(SecurityState.UNSECURED.name());
componentStatus1.setComponentName(DATANODE);
componentStatus1.setExtra(extra);
componentStatuses.add(componentStatus1);
hb.setComponentStatus(componentStatuses);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
).anyTimes();
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
ServiceComponentHost sch=hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
Assert.assertEquals(Integer.valueOf(2),Integer.valueOf(sch.getProcesses().size()));
hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(1);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
componentStatus1=new ComponentStatus();
componentStatus1.setClusterName(DummyCluster);
componentStatus1.setServiceName(HDFS);
componentStatus1.setMessage(DummyHostStatus);
componentStatus1.setStatus(State.STARTED.name());
componentStatus1.setSecurityState(SecurityState.UNSECURED.name());
componentStatus1.setComponentName(DATANODE);
hb.setComponentStatus(Collections.singletonList(componentStatus1));
handler.handleHeartBeat(hb);
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testComponentUpgradeCompleteReport() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(HDFS_CLIENT).persist();
hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
StackId stack130=new StackId("HDP-1.3.0");
StackId stack120=new StackId("HDP-1.2.0");
serviceComponentHost1.setState(State.UPGRADING);
serviceComponentHost2.setState(State.INSTALLING);
serviceComponentHost1.setStackVersion(stack120);
serviceComponentHost1.setDesiredStackVersion(stack130);
serviceComponentHost2.setStackVersion(stack120);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
CommandReport cr1=new CommandReport();
cr1.setActionId(StageUtils.getActionId(requestId,stageId));
cr1.setTaskId(1);
cr1.setClusterName(DummyCluster);
cr1.setServiceName(HDFS);
cr1.setRole(DATANODE);
cr1.setStatus(HostRoleStatus.COMPLETED.toString());
cr1.setStdErr("none");
cr1.setStdOut("dummy output");
cr1.setExitCode(0);
cr1.setRoleCommand(RoleCommand.UPGRADE.toString());
CommandReport cr2=new CommandReport();
cr2.setActionId(StageUtils.getActionId(requestId,stageId));
cr2.setTaskId(2);
cr2.setClusterName(DummyCluster);
cr2.setServiceName(HDFS);
cr2.setRole(NAMENODE);
cr2.setStatus(HostRoleStatus.COMPLETED.toString());
cr2.setStdErr("none");
cr2.setStdOut("dummy output");
cr2.setExitCode(0);
cr2.setRoleCommand(RoleCommand.UPGRADE.toString());
ArrayList reports=new ArrayList();
reports.add(cr1);
reports.add(cr2);
hb.setReports(reports);
ActionQueue aq=new ActionQueue();
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
assertEquals("Stack version for SCH should be updated to " + serviceComponentHost1.getDesiredStackVersion(),stack130,serviceComponentHost1.getStackVersion());
assertEquals("Stack version for SCH should not change ",stack120,serviceComponentHost2.getStackVersion());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testProcessStatusReports() throws Exception {
Clusters fsm=clusters;
Cluster cluster=getDummyCluster();
Host hostObject=clusters.getHost(DummyHostname1);
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1).setState(State.STARTED);
hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1).setState(State.STARTED);
ActionQueue aq=new ActionQueue();
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
).anyTimes();
replay(am);
HeartBeatHandler handler=new HeartBeatHandler(fsm,aq,am,injector);
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOs);
hi.setOSRelease(DummyOSRelease);
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
handler.handleRegistration(reg);
hostObject.setState(HostState.UNHEALTHY);
aq.enqueue(DummyHostname1,new StatusCommand());
HeartBeat hb1=new HeartBeat();
hb1.setResponseId(0);
hb1.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb1.setHostname(DummyHostname1);
List componentStatus=new ArrayList();
ComponentStatus dataNodeStatus=new ComponentStatus();
dataNodeStatus.setClusterName(cluster.getClusterName());
dataNodeStatus.setServiceName(HDFS);
dataNodeStatus.setComponentName(DATANODE);
dataNodeStatus.setStatus("STARTED");
dataNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(dataNodeStatus);
ComponentStatus nameNodeStatus=new ComponentStatus();
nameNodeStatus.setClusterName(cluster.getClusterName());
nameNodeStatus.setServiceName(HDFS);
nameNodeStatus.setComponentName(NAMENODE);
nameNodeStatus.setStatus("STARTED");
nameNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(nameNodeStatus);
hb1.setComponentStatus(componentStatus);
handler.handleHeartBeat(hb1);
assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(),hostObject.getStatus());
HeartBeat hb2=new HeartBeat();
hb2.setResponseId(1);
hb2.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb2.setHostname(DummyHostname1);
componentStatus=new ArrayList();
dataNodeStatus=new ComponentStatus();
dataNodeStatus.setClusterName(cluster.getClusterName());
dataNodeStatus.setServiceName(HDFS);
dataNodeStatus.setComponentName(DATANODE);
dataNodeStatus.setStatus("INSTALLED");
dataNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(dataNodeStatus);
nameNodeStatus=new ComponentStatus();
nameNodeStatus.setClusterName(cluster.getClusterName());
nameNodeStatus.setServiceName(HDFS);
nameNodeStatus.setComponentName(NAMENODE);
nameNodeStatus.setStatus("STARTED");
nameNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(nameNodeStatus);
hb2.setComponentStatus(componentStatus);
handler.handleHeartBeat(hb2);
assertEquals(HostHealthStatus.HealthStatus.ALERT.name(),hostObject.getStatus());
hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1).setMaintenanceState(MaintenanceState.ON);
HeartBeat hb2a=new HeartBeat();
hb2a.setResponseId(2);
hb2a.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb2a.setHostname(DummyHostname1);
componentStatus=new ArrayList();
dataNodeStatus=new ComponentStatus();
dataNodeStatus.setClusterName(cluster.getClusterName());
dataNodeStatus.setServiceName(HDFS);
dataNodeStatus.setComponentName(DATANODE);
dataNodeStatus.setStatus("INSTALLED");
dataNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(dataNodeStatus);
nameNodeStatus=new ComponentStatus();
nameNodeStatus.setClusterName(cluster.getClusterName());
nameNodeStatus.setServiceName(HDFS);
nameNodeStatus.setComponentName(NAMENODE);
nameNodeStatus.setStatus("STARTED");
nameNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(nameNodeStatus);
hb2a.setComponentStatus(componentStatus);
handler.handleHeartBeat(hb2a);
assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(),hostObject.getStatus());
hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1).setMaintenanceState(MaintenanceState.OFF);
HeartBeat hb3=new HeartBeat();
hb3.setResponseId(3);
hb3.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb3.setHostname(DummyHostname1);
componentStatus=new ArrayList();
dataNodeStatus=new ComponentStatus();
dataNodeStatus.setClusterName(cluster.getClusterName());
dataNodeStatus.setServiceName(HDFS);
dataNodeStatus.setComponentName(DATANODE);
dataNodeStatus.setStatus("INSTALLED");
dataNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(dataNodeStatus);
nameNodeStatus=new ComponentStatus();
nameNodeStatus.setClusterName(cluster.getClusterName());
nameNodeStatus.setServiceName(HDFS);
nameNodeStatus.setComponentName(NAMENODE);
nameNodeStatus.setStatus("INSTALLED");
nameNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(nameNodeStatus);
hb3.setComponentStatus(componentStatus);
handler.handleHeartBeat(hb3);
assertEquals(HostHealthStatus.HealthStatus.UNHEALTHY.name(),hostObject.getStatus());
hb1.setResponseId(4);
handler.handleHeartBeat(hb1);
assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(),hostObject.getStatus());
reset(am);
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
).anyTimes();
replay(am);
hdfs.getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1).setState(State.INSTALLED);
HeartBeat hb4=new HeartBeat();
hb4.setResponseId(5);
hb4.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb4.setHostname(DummyHostname1);
componentStatus=new ArrayList();
dataNodeStatus=new ComponentStatus();
dataNodeStatus.setClusterName(cluster.getClusterName());
dataNodeStatus.setServiceName(HDFS);
dataNodeStatus.setComponentName(DATANODE);
dataNodeStatus.setStatus("STARTED");
dataNodeStatus.setSecurityState(SecurityState.UNSECURED.name());
componentStatus.add(dataNodeStatus);
hb4.setComponentStatus(componentStatus);
handler.handleHeartBeat(hb4);
assertEquals(HostHealthStatus.HealthStatus.UNHEALTHY.name(),hostObject.getStatus());
hb1.setResponseId(6);
handler.handleHeartBeat(hb1);
assertEquals(HostHealthStatus.HealthStatus.HEALTHY.name(),hostObject.getStatus());
HeartBeat hb5=new HeartBeat();
hb5.setResponseId(7);
hb5.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb5.setHostname(DummyHostname1);
CommandReport cr1=new CommandReport();
cr1.setActionId(StageUtils.getActionId(requestId,stageId));
cr1.setServiceName(HDFS);
cr1.setTaskId(1);
cr1.setRole(DATANODE);
cr1.setStatus("COMPLETED");
cr1.setStdErr("");
cr1.setStdOut("");
cr1.setExitCode(215);
cr1.setRoleCommand("STOP");
cr1.setClusterName(DummyCluster);
ArrayList reports=new ArrayList();
reports.add(cr1);
hb5.setReports(reports);
handler.handleHeartBeat(hb5);
assertEquals(HostHealthStatus.HealthStatus.ALERT.name(),hostObject.getStatus());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRequestId() throws IOException, InvalidStateTransitionException, JsonGenerationException, JAXBException {
HeartBeatHandler heartBeatHandler=injector.getInstance(HeartBeatHandler.class);
Register register=new Register();
register.setHostname("newHost");
register.setTimestamp(new Date().getTime());
register.setResponseId(123);
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS("redhat5");
register.setHardwareProfile(hi);
register.setAgentVersion(metaInfo.getServerVersion());
RegistrationResponse registrationResponse=heartBeatHandler.handleRegistration(register);
assertEquals("ResponseId should start from zero",0L,registrationResponse.getResponseId());
HeartBeat heartBeat=constructHeartBeat("newHost",registrationResponse.getResponseId(),Status.HEALTHY);
HeartBeatResponse hbResponse=heartBeatHandler.handleHeartBeat(heartBeat);
assertEquals("responseId was not incremented",1L,hbResponse.getResponseId());
assertTrue("Not cached response returned",hbResponse == heartBeatHandler.handleHeartBeat(heartBeat));
heartBeat.setResponseId(1L);
hbResponse=heartBeatHandler.handleHeartBeat(heartBeat);
assertEquals("responseId was not incremented",2L,hbResponse.getResponseId());
assertFalse("Agent is flagged for restart",hbResponse.isRestartAgent());
log.debug(StageUtils.jaxbToString(hbResponse));
heartBeat.setResponseId(20L);
hbResponse=heartBeatHandler.handleHeartBeat(heartBeat);
assertTrue("Agent is not flagged for restart",hbResponse.isRestartAgent());
log.debug(StageUtils.jaxbToString(hbResponse));
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testCommandStatusProcesses_empty() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1).setState(State.STARTED);
ActionQueue aq=new ActionQueue();
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setReports(new ArrayList());
ArrayList componentStatuses=new ArrayList();
ComponentStatus componentStatus1=new ComponentStatus();
componentStatus1.setClusterName(DummyCluster);
componentStatus1.setServiceName(HDFS);
componentStatus1.setMessage(DummyHostStatus);
componentStatus1.setStatus(State.STARTED.name());
componentStatus1.setSecurityState(SecurityState.UNSECURED.name());
componentStatus1.setComponentName(DATANODE);
componentStatuses.add(componentStatus1);
hb.setComponentStatus(componentStatuses);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
ServiceComponentHost sch=hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
Assert.assertEquals(Integer.valueOf(0),Integer.valueOf(sch.getProcesses().size()));
}
UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testRegistrationWithBadVersion() throws AmbariException, InvalidStateTransitionException {
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
HeartBeatHandler handler=new HeartBeatHandler(fsm,new ActionQueue(),am,injector);
clusters.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOsType);
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setAgentVersion("");
reg.setPrefix(Configuration.PREFIX_DIR);
try {
handler.handleRegistration(reg);
fail("Expected failure for non compatible agent version");
}
catch ( AmbariException e) {
log.debug("Error:" + e.getMessage());
Assert.assertTrue(e.getMessage().contains("Cannot register host with non compatible agent version"));
}
reg.setAgentVersion(null);
try {
handler.handleRegistration(reg);
fail("Expected failure for non compatible agent version");
}
catch ( AmbariException e) {
log.debug("Error:" + e.getMessage());
Assert.assertTrue(e.getMessage().contains("Cannot register host with non compatible agent version"));
}
}
InternalCallVerifier EqualityVerifier
@Test public void testCommandReport() throws AmbariException {
injector.injectMembers(this);
clusters.addHost(DummyHostname1);
clusters.getHost(DummyHostname1).persist();
StackId dummyStackId=new StackId(DummyStackId);
clusters.addCluster(DummyCluster,dummyStackId);
ActionDBAccessor db=injector.getInstance(ActionDBAccessorImpl.class);
ActionManager am=new ActionManager(5000,1200000,new ActionQueue(),clusters,db,new HostsMap((String)null),unitOfWork,injector.getInstance(RequestFactory.class),null,null);
populateActionDB(db,DummyHostname1);
Stage stage=db.getAllStages(requestId).get(0);
Assert.assertEquals(stageId,stage.getStageId());
stage.setHostRoleStatus(DummyHostname1,HBASE_MASTER,HostRoleStatus.QUEUED);
db.hostRoleScheduled(stage,DummyHostname1,HBASE_MASTER);
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setTaskId(1);
cr.setRole(HBASE_MASTER);
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(215);
cr.setConfigurationTags(new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
);
reports.add(cr);
am.processTaskResponse(DummyHostname1,reports,stage.getOrderedHostRoleCommands());
assertEquals(215,am.getAction(requestId,stageId).getExitCode(DummyHostname1,HBASE_MASTER));
assertEquals(HostRoleStatus.COMPLETED,am.getAction(requestId,stageId).getHostRoleStatus(DummyHostname1,HBASE_MASTER));
Stage s=db.getAllStages(requestId).get(0);
assertEquals(HostRoleStatus.COMPLETED,s.getHostRoleStatus(DummyHostname1,HBASE_MASTER));
assertEquals(215,s.getExitCode(DummyHostname1,HBASE_MASTER));
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testRecoveryStatusReports() throws Exception {
Clusters fsm=clusters;
Cluster cluster=getDummyCluster();
Host hostObject=clusters.getHost(DummyHostname1);
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1).setState(State.STARTED);
hdfs.getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1).setState(State.STARTED);
ActionQueue aq=new ActionQueue();
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
).anyTimes();
replay(am);
HeartBeatHandler handler=new HeartBeatHandler(fsm,aq,am,injector);
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOs);
hi.setOSRelease(DummyOSRelease);
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
handler.handleRegistration(reg);
hostObject.setState(HostState.UNHEALTHY);
aq.enqueue(DummyHostname1,new StatusCommand());
HeartBeat hb1=new HeartBeat();
hb1.setResponseId(0);
hb1.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb1.setHostname(DummyHostname1);
RecoveryReport rr=new RecoveryReport();
rr.setSummary("RECOVERABLE");
List compRecReports=new ArrayList();
ComponentRecoveryReport compRecReport=new ComponentRecoveryReport();
compRecReport.setLimitReached(Boolean.FALSE);
compRecReport.setName("DATANODE");
compRecReport.setNumAttempts(2);
compRecReports.add(compRecReport);
rr.setComponentReports(compRecReports);
hb1.setRecoveryReport(rr);
handler.handleHeartBeat(hb1);
assertEquals("RECOVERABLE",hostObject.getRecoveryReport().getSummary());
assertEquals(1,hostObject.getRecoveryReport().getComponentReports().size());
assertEquals(2,hostObject.getRecoveryReport().getComponentReports().get(0).getNumAttempts());
HeartBeat hb2=new HeartBeat();
hb2.setResponseId(1);
hb2.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb2.setHostname(DummyHostname1);
rr=new RecoveryReport();
rr.setSummary("UNRECOVERABLE");
compRecReports=new ArrayList();
compRecReport=new ComponentRecoveryReport();
compRecReport.setLimitReached(Boolean.TRUE);
compRecReport.setName("DATANODE");
compRecReport.setNumAttempts(5);
compRecReports.add(compRecReport);
rr.setComponentReports(compRecReports);
hb2.setRecoveryReport(rr);
handler.handleHeartBeat(hb2);
assertEquals("UNRECOVERABLE",hostObject.getRecoveryReport().getSummary());
assertEquals(1,hostObject.getRecoveryReport().getComponentReports().size());
assertEquals(5,hostObject.getRecoveryReport().getComponentReports().get(0).getNumAttempts());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testHeartbeat() throws Exception {
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList());
replay(am);
Clusters fsm=clusters;
fsm.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
hostObject.setOsType(DummyOsType);
ActionQueue aq=new ActionQueue();
HeartBeatHandler handler=new HeartBeatHandler(fsm,aq,am,injector);
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOs);
hi.setOSRelease(DummyOSRelease);
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
handler.handleRegistration(reg);
hostObject.setState(HostState.UNHEALTHY);
ExecutionCommand execCmd=new ExecutionCommand();
execCmd.setRequestAndStage(2,34);
execCmd.setHostname(DummyHostname1);
aq.enqueue(DummyHostname1,new ExecutionCommand());
HeartBeat hb=new HeartBeat();
hb.setResponseId(0);
HostStatus hs=new HostStatus(Status.HEALTHY,DummyHostStatus);
List al=new ArrayList();
al.add(new Alert());
hb.setNodeStatus(hs);
hb.setHostname(DummyHostname1);
handler.handleHeartBeat(hb);
assertEquals(HostState.HEALTHY,hostObject.getState());
assertEquals(0,aq.dequeueAll(DummyHostname1).size());
}
InternalCallVerifier BooleanVerifier
@Test public void testStateCommandsAtRegistration() throws AmbariException, InvalidStateTransitionException {
List dummyCmds=new ArrayList();
StatusCommand statusCmd1=new StatusCommand();
statusCmd1.setClusterName(DummyCluster);
statusCmd1.setServiceName(HDFS);
dummyCmds.add(statusCmd1);
HeartbeatMonitor hm=mock(HeartbeatMonitor.class);
when(hm.generateStatusCommands(anyString())).thenReturn(dummyCmds);
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
ActionQueue actionQueue=new ActionQueue();
HeartBeatHandler handler=new HeartBeatHandler(fsm,actionQueue,am,injector);
handler.setHeartbeatMonitor(hm);
clusters.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOsType);
reg.setHostname(DummyHostname1);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
RegistrationResponse registrationResponse=handler.handleRegistration(reg);
registrationResponse.getStatusCommands();
assertTrue(registrationResponse.getStatusCommands().size() == 1);
assertTrue(registrationResponse.getStatusCommands().get(0).equals(statusCmd1));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test @SuppressWarnings("unchecked") public void testHeartbeatWithConfigs() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(NAMENODE).persist();
hdfs.getServiceComponent(NAMENODE).addServiceComponentHost(DummyHostname1).persist();
hdfs.addServiceComponent(SECONDARY_NAMENODE).persist();
hdfs.getServiceComponent(SECONDARY_NAMENODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
ServiceComponentHost serviceComponentHost2=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(NAMENODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.INSTALLED);
serviceComponentHost2.setState(State.INSTALLED);
HeartBeat hb=new HeartBeat();
hb.setResponseId(0);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setHostname(DummyHostname1);
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setServiceName(HDFS);
cr.setTaskId(1);
cr.setRole(DATANODE);
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(215);
cr.setRoleCommand("START");
cr.setClusterName(DummyCluster);
cr.setConfigurationTags(new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
);
reports.add(cr);
hb.setReports(reports);
HostEntity host1=hostDAO.findByName(DummyHostname1);
Assert.assertNotNull(host1);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
Assert.assertNotNull(serviceComponentHost1.getActualConfigs());
Assert.assertEquals(serviceComponentHost1.getActualConfigs().size(),1);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test @SuppressWarnings("unchecked") public void testRestartRequiredAfterInstallClient() throws Exception {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(HDFS_CLIENT).persist();
hdfs.getServiceComponent(HDFS_CLIENT).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(HDFS_CLIENT).getServiceComponentHost(DummyHostname1);
serviceComponentHost.setState(State.INSTALLED);
serviceComponentHost.setRestartRequired(true);
HeartBeat hb=new HeartBeat();
hb.setResponseId(0);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
hb.setHostname(DummyHostname1);
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setServiceName(HDFS);
cr.setRoleCommand("INSTALL");
cr.setCustomCommand("EXECUTION_COMMAND");
cr.setTaskId(1);
cr.setRole(HDFS_CLIENT);
cr.setStatus("COMPLETED");
cr.setStdErr("");
cr.setStdOut("");
cr.setExitCode(215);
cr.setClusterName(DummyCluster);
cr.setConfigurationTags(new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
);
reports.add(cr);
hb.setReports(reports);
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
add(command);
}
}
);
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
Assert.assertNotNull(serviceComponentHost.getActualConfigs());
Assert.assertFalse(serviceComponentHost.isRestartRequired());
Assert.assertEquals(serviceComponentHost.getActualConfigs().size(),1);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRegistration() throws AmbariException, InvalidStateTransitionException {
ActionManager am=getMockActionManager();
replay(am);
Clusters fsm=clusters;
HeartBeatHandler handler=new HeartBeatHandler(fsm,new ActionQueue(),am,injector);
clusters.addHost(DummyHostname1);
Host hostObject=clusters.getHost(DummyHostname1);
hostObject.setIPv4("ipv4");
hostObject.setIPv6("ipv6");
Register reg=new Register();
HostInfo hi=new HostInfo();
hi.setHostName(DummyHostname1);
hi.setOS(DummyOsType);
reg.setHostname(DummyHostname1);
reg.setCurrentPingPort(DummyCurrentPingPort);
reg.setHardwareProfile(hi);
reg.setAgentVersion(metaInfo.getServerVersion());
reg.setPrefix(Configuration.PREFIX_DIR);
handler.handleRegistration(reg);
assertEquals(hostObject.getState(),HostState.HEALTHY);
assertEquals(DummyOsType,hostObject.getOsType());
assertEquals(DummyCurrentPingPort,hostObject.getCurrentPingPort());
assertTrue(hostObject.getLastRegistrationTime() != 0);
assertEquals(hostObject.getLastHeartbeatTime(),hostObject.getLastRegistrationTime());
}
InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testUpgradeSpecificHandling() throws AmbariException, InvalidStateTransitionException {
Cluster cluster=getDummyCluster();
Service hdfs=cluster.addService(HDFS);
hdfs.persist();
hdfs.addServiceComponent(DATANODE).persist();
hdfs.getServiceComponent(DATANODE).addServiceComponentHost(DummyHostname1).persist();
ActionQueue aq=new ActionQueue();
ServiceComponentHost serviceComponentHost1=clusters.getCluster(DummyCluster).getService(HDFS).getServiceComponent(DATANODE).getServiceComponentHost(DummyHostname1);
serviceComponentHost1.setState(State.UPGRADING);
HeartBeat hb=new HeartBeat();
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(0);
hb.setHostname(DummyHostname1);
hb.setNodeStatus(new HostStatus(Status.HEALTHY,DummyHostStatus));
List reports=new ArrayList();
CommandReport cr=new CommandReport();
cr.setActionId(StageUtils.getActionId(requestId,stageId));
cr.setTaskId(1);
cr.setClusterName(DummyCluster);
cr.setServiceName(HDFS);
cr.setRole(DATANODE);
cr.setRoleCommand("INSTALL");
cr.setStatus(HostRoleStatus.IN_PROGRESS.toString());
cr.setStdErr("none");
cr.setStdOut("dummy output");
cr.setExitCode(777);
reports.add(cr);
hb.setReports(reports);
hb.setComponentStatus(new ArrayList());
final HostRoleCommand command=hostRoleCommandFactory.create(DummyHostname1,Role.DATANODE,null,null);
ActionManager am=getMockActionManager();
expect(am.getTasks(anyObject(List.class))).andReturn(new ArrayList(){
{
add(command);
}
}
).anyTimes();
replay(am);
HeartBeatHandler handler=getHeartBeatHandler(am,aq);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.UPGRADING,State.UPGRADING,serviceComponentHost1.getState());
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(1);
cr.setStatus(HostRoleStatus.COMPLETED.toString());
cr.setExitCode(0);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.INSTALLED,State.INSTALLED,serviceComponentHost1.getState());
serviceComponentHost1.setState(State.UPGRADING);
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(2);
cr.setStatus(HostRoleStatus.FAILED.toString());
cr.setExitCode(3);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.UPGRADING,State.UPGRADING,serviceComponentHost1.getState());
serviceComponentHost1.setState(State.UPGRADING);
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(3);
cr.setStatus(HostRoleStatus.PENDING.toString());
cr.setExitCode(55);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.UPGRADING,State.UPGRADING,serviceComponentHost1.getState());
serviceComponentHost1.setState(State.UPGRADING);
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(4);
cr.setStatus(HostRoleStatus.QUEUED.toString());
cr.setExitCode(55);
handler.handleHeartBeat(hb);
assertEquals("Host state should be " + State.UPGRADING,State.UPGRADING,serviceComponentHost1.getState());
}
Class: org.apache.ambari.server.agent.TestHeartbeatMonitor InternalCallVerifier EqualityVerifier
@Test public void testHeartbeatLoss() throws AmbariException, InterruptedException, InvalidStateTransitionException {
Clusters fsm=injector.getInstance(Clusters.class);
String hostname="host1";
fsm.addHost(hostname);
ActionQueue aq=new ActionQueue();
ActionManager am=mock(ActionManager.class);
HeartbeatMonitor hm=new HeartbeatMonitor(fsm,aq,am,10,injector);
HeartBeatHandler handler=new HeartBeatHandler(fsm,aq,am,injector);
Register reg=new Register();
reg.setHostname(hostname);
reg.setResponseId(12);
reg.setTimestamp(System.currentTimeMillis() - 300);
reg.setAgentVersion(ambariMetaInfo.getServerVersion());
HostInfo hi=new HostInfo();
hi.setOS("Centos5");
reg.setHardwareProfile(hi);
handler.handleRegistration(reg);
HeartBeat hb=new HeartBeat();
hb.setHostname(hostname);
hb.setNodeStatus(new HostStatus(HostStatus.Status.HEALTHY,"cool"));
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(12);
handler.handleHeartBeat(hb);
hm.start();
aq.enqueue(hostname,new ExecutionCommand());
while (aq.size(hostname) != 0) {
Thread.sleep(1);
}
assertEquals(fsm.getHost(hostname).getState(),HostState.HEARTBEAT_LOST);
}
IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testHeartbeatStateCommandsEnqueueing() throws AmbariException, InterruptedException, InvalidStateTransitionException {
StackId stackId=new StackId("HDP-0.1");
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1),"redhat","5.9");
clusters.getHost(hostname1).persist();
clusters.addCluster(clusterName,stackId);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Set hostNames=new HashSet(){
{
add(hostname1);
}
}
;
clusters.mapHostsToCluster(hostNames,clusterName);
Service hdfs=cluster.addService(serviceName);
hdfs.persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
ActionQueue aqMock=mock(ActionQueue.class);
ArgumentCaptor commandCaptor=ArgumentCaptor.forClass(AgentCommand.class);
ActionManager am=mock(ActionManager.class);
HeartbeatMonitor hm=new HeartbeatMonitor(clusters,aqMock,am,heartbeatMonitorWakeupIntervalMS,injector);
HeartBeatHandler handler=new HeartBeatHandler(clusters,aqMock,am,injector);
Register reg=new Register();
reg.setHostname(hostname1);
reg.setResponseId(12);
reg.setTimestamp(System.currentTimeMillis() - 15);
reg.setAgentVersion(ambariMetaInfo.getServerVersion());
HostInfo hi=new HostInfo();
hi.setOS("Centos5");
reg.setHardwareProfile(hi);
handler.handleRegistration(reg);
HeartBeat hb=new HeartBeat();
hb.setHostname(hostname1);
hb.setNodeStatus(new HostStatus(HostStatus.Status.HEALTHY,"cool"));
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(13);
handler.handleHeartBeat(hb);
LOG.info("YYY");
clusters.getHost(hostname1).setLastHeartbeatTime(System.currentTimeMillis() - 15);
hm.start();
Thread.sleep(3 * heartbeatMonitorWakeupIntervalMS);
hm.shutdown();
int tryNumber=0;
while (hm.isAlive()) {
hm.join(2 * heartbeatMonitorWakeupIntervalMS);
tryNumber++;
if (tryNumber >= 5) {
fail("HeartbeatMonitor should be already stopped");
}
}
verify(aqMock,atLeast(2)).enqueue(eq(hostname1),commandCaptor.capture());
List cmds=commandCaptor.getAllValues();
assertTrue("HeartbeatMonitor should generate StatusCommands for host1",cmds.size() >= 2);
for ( AgentCommand command : cmds) {
assertEquals("HDFS",((StatusCommand)command).getServiceName());
}
}
BranchVerifier InternalCallVerifier EqualityVerifier
@Test public void testHeartbeatLossWithComponent() throws AmbariException, InterruptedException, InvalidStateTransitionException {
StackId stackId=new StackId("HDP-0.1");
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1),"redhat","6.3");
clusters.getHost(hostname1).persist();
clusters.addCluster(clusterName,stackId);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Set hostNames=new HashSet(){
{
add(hostname1);
}
}
;
clusters.mapHostsToCluster(hostNames,clusterName);
Service hdfs=cluster.addService(serviceName);
hdfs.persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost(hostname1);
ActionQueue aq=new ActionQueue();
ActionManager am=mock(ActionManager.class);
HeartbeatMonitor hm=new HeartbeatMonitor(clusters,aq,am,10,injector);
HeartBeatHandler handler=new HeartBeatHandler(clusters,aq,am,injector);
Register reg=new Register();
reg.setHostname(hostname1);
reg.setResponseId(12);
reg.setTimestamp(System.currentTimeMillis() - 300);
reg.setAgentVersion(ambariMetaInfo.getServerVersion());
HostInfo hi=new HostInfo();
hi.setOS("Centos5");
reg.setHardwareProfile(hi);
handler.handleRegistration(reg);
cluster=clusters.getClustersForHost(hostname1).iterator().next();
for ( ServiceComponentHost sch : cluster.getServiceComponentHosts(hostname1)) {
if (sch.getServiceComponentName().equals("NAMENODE")) {
sch.handleEvent(new ServiceComponentHostInstallEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis(),"HDP-0.1"));
sch.handleEvent(new ServiceComponentHostOpSucceededEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
sch.handleEvent(new ServiceComponentHostStartedEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
}
else if (sch.getServiceComponentName().equals("DATANODE")) {
sch.handleEvent(new ServiceComponentHostInstallEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis(),"HDP-0.1"));
}
else if (sch.getServiceComponentName().equals("SECONDARY_NAMENODE")) {
sch.handleEvent(new ServiceComponentHostInstallEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis(),"HDP-0.1"));
sch.handleEvent(new ServiceComponentHostOpSucceededEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
sch.handleEvent(new ServiceComponentHostDisableEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
}
}
HeartBeat hb=new HeartBeat();
hb.setHostname(hostname1);
hb.setNodeStatus(new HostStatus(HostStatus.Status.HEALTHY,"cool"));
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(12);
handler.handleHeartBeat(hb);
hm.start();
aq.enqueue(hostname1,new ExecutionCommand());
while (aq.size(hostname1) != 0) {
Thread.sleep(1);
}
hm.shutdown();
cluster=clusters.getClustersForHost(hostname1).iterator().next();
for ( ServiceComponentHost sch : cluster.getServiceComponentHosts(hostname1)) {
Service s=cluster.getService(sch.getServiceName());
ServiceComponent sc=s.getServiceComponent(sch.getServiceComponentName());
if (sch.getServiceComponentName().equals("NAMENODE")) {
assertEquals(sch.getServiceComponentName(),State.UNKNOWN,sch.getState());
}
else if (sch.getServiceComponentName().equals("DATANODE")) {
assertEquals(sch.getServiceComponentName(),State.INSTALLING,sch.getState());
}
else if (sc.isClientComponent()) {
assertEquals(sch.getServiceComponentName(),State.INIT,sch.getState());
}
else if (sch.getServiceComponentName().equals("SECONDARY_NAMENODE")) {
assertEquals(sch.getServiceComponentName(),State.DISABLED,sch.getState());
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testStateCommandsGeneration() throws AmbariException, InterruptedException, InvalidStateTransitionException {
StackId stackId=new StackId("HDP-0.1");
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1),"redhat","6.3");
clusters.getHost(hostname1).persist();
clusters.addHost(hostname2);
setOsFamily(clusters.getHost(hostname2),"redhat","6.3");
clusters.getHost(hostname2).persist();
clusters.addCluster(clusterName,stackId);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Set hostNames=new HashSet(){
{
add(hostname1);
add(hostname2);
}
}
;
ConfigFactory configFactory=injector.getInstance(ConfigFactory.class);
Config config=configFactory.createNew(cluster,"hadoop-env",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config.setTag("version1");
cluster.addConfig(config);
cluster.addDesiredConfig("_test",Collections.singleton(config));
clusters.mapHostsToCluster(hostNames,clusterName);
Service hdfs=cluster.addService(serviceName);
hdfs.persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
ActionQueue aq=new ActionQueue();
ActionManager am=mock(ActionManager.class);
HeartbeatMonitor hm=new HeartbeatMonitor(clusters,aq,am,heartbeatMonitorWakeupIntervalMS,injector);
HeartBeatHandler handler=new HeartBeatHandler(clusters,aq,am,injector);
Register reg=new Register();
reg.setHostname(hostname1);
reg.setResponseId(12);
reg.setTimestamp(System.currentTimeMillis() - 300);
reg.setAgentVersion(ambariMetaInfo.getServerVersion());
HostInfo hi=new HostInfo();
hi.setOS("Centos5");
reg.setHardwareProfile(hi);
handler.handleRegistration(reg);
HeartBeat hb=new HeartBeat();
hb.setHostname(hostname1);
hb.setNodeStatus(new HostStatus(HostStatus.Status.HEALTHY,"cool"));
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(12);
handler.handleHeartBeat(hb);
List cmds=hm.generateStatusCommands(hostname1);
assertTrue("HeartbeatMonitor should generate StatusCommands for host1",cmds.size() == 3);
assertEquals("HDFS",cmds.get(0).getServiceName());
boolean containsDATANODEStatus=false;
boolean containsNAMENODEStatus=false;
boolean containsSECONDARY_NAMENODEStatus=false;
for ( StatusCommand cmd : cmds) {
containsDATANODEStatus|=cmd.getComponentName().equals("DATANODE");
containsNAMENODEStatus|=cmd.getComponentName().equals("NAMENODE");
containsSECONDARY_NAMENODEStatus|=cmd.getComponentName().equals("SECONDARY_NAMENODE");
assertTrue(cmd.getConfigurations().size() > 0);
}
assertEquals(true,containsDATANODEStatus);
assertEquals(true,containsNAMENODEStatus);
assertEquals(true,containsSECONDARY_NAMENODEStatus);
cmds=hm.generateStatusCommands(hostname2);
assertTrue("HeartbeatMonitor should not generate StatusCommands for host2 because it has no services",cmds.isEmpty());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testStatusCommandForAnyComponents() throws Exception {
StackId stackId=new StackId("HDP-0.1");
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1),"redhat","6.3");
clusters.getHost(hostname1).persist();
clusters.addHost(hostname2);
setOsFamily(clusters.getHost(hostname2),"redhat","6.3");
clusters.getHost(hostname2).persist();
clusters.addCluster(clusterName,stackId);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Set hostNames=new HashSet(){
{
add(hostname1);
add(hostname2);
}
}
;
ConfigFactory configFactory=injector.getInstance(ConfigFactory.class);
Config config=configFactory.createNew(cluster,"hadoop-env",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config.setTag("version1");
cluster.addConfig(config);
cluster.addDesiredConfig("_test",Collections.singleton(config));
clusters.mapHostsToCluster(hostNames,clusterName);
Service hdfs=cluster.addService(serviceName);
hdfs.persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost(hostname1).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost(hostname2).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).getServiceComponentHost(hostname2).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setDesiredState(State.INSTALLED);
hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setDesiredState(State.INSTALLED);
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setDesiredState(State.INSTALLED);
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).getServiceComponentHost(hostname1).setDesiredState(State.INSTALLED);
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).getServiceComponentHost(hostname2).setDesiredState(State.INSTALLED);
ActionQueue aq=new ActionQueue();
ActionManager am=mock(ActionManager.class);
HeartbeatMonitor hm=new HeartbeatMonitor(clusters,aq,am,heartbeatMonitorWakeupIntervalMS,injector);
HeartBeatHandler handler=new HeartBeatHandler(clusters,aq,am,injector);
Register reg=new Register();
reg.setHostname(hostname1);
reg.setResponseId(12);
reg.setTimestamp(System.currentTimeMillis() - 300);
reg.setAgentVersion(ambariMetaInfo.getServerVersion());
HostInfo hi=new HostInfo();
hi.setOS("Centos5");
reg.setHardwareProfile(hi);
handler.handleRegistration(reg);
HeartBeat hb=new HeartBeat();
hb.setHostname(hostname1);
hb.setNodeStatus(new HostStatus(HostStatus.Status.HEALTHY,"cool"));
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(12);
handler.handleHeartBeat(hb);
List cmds=hm.generateStatusCommands(hostname1);
assertTrue("HeartbeatMonitor should generate StatusCommands for host1",cmds.size() == 4);
assertEquals("HDFS",cmds.get(0).getServiceName());
boolean containsDATANODEStatus=false;
boolean containsNAMENODEStatus=false;
boolean containsSECONDARY_NAMENODEStatus=false;
boolean containsHDFS_CLIENTStatus=false;
for ( StatusCommand cmd : cmds) {
containsDATANODEStatus|=cmd.getComponentName().equals("DATANODE");
containsNAMENODEStatus|=cmd.getComponentName().equals("NAMENODE");
containsSECONDARY_NAMENODEStatus|=cmd.getComponentName().equals("SECONDARY_NAMENODE");
containsHDFS_CLIENTStatus|=cmd.getComponentName().equals("HDFS_CLIENT");
assertTrue(cmd.getConfigurations().size() > 0);
assertEquals(State.INSTALLED,cmd.getDesiredState());
assertEquals(false,cmd.getHasStaleConfigs());
}
assertTrue(containsDATANODEStatus);
assertTrue(containsNAMENODEStatus);
assertTrue(containsSECONDARY_NAMENODEStatus);
assertTrue(containsHDFS_CLIENTStatus);
cmds=hm.generateStatusCommands(hostname2);
assertTrue("HeartbeatMonitor should generate StatusCommands for host2, " + "even if it has only client components",cmds.size() == 1);
assertTrue(cmds.get(0).getComponentName().equals(Role.HDFS_CLIENT.name()));
assertEquals(hostname2,cmds.get(0).getHostname());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testStateCommandsWithAlertsGeneration() throws AmbariException, InterruptedException, InvalidStateTransitionException {
StackId stackId=new StackId("HDP-2.0.7");
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(hostname1);
setOsFamily(clusters.getHost(hostname1),"redhat","6.3");
clusters.getHost(hostname1).persist();
clusters.addHost(hostname2);
setOsFamily(clusters.getHost(hostname2),"redhat","6.3");
clusters.getHost(hostname2).persist();
clusters.addCluster(clusterName,stackId);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(stackId);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Set hostNames=new HashSet(){
{
add(hostname1);
add(hostname2);
}
}
;
clusters.mapHostsToCluster(hostNames,clusterName);
Service hdfs=cluster.addService(serviceName);
hdfs.persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.addServiceComponent(Role.SECONDARY_NAMENODE.name()).persist();
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).addServiceComponentHost(hostname1).persist();
hdfs.getServiceComponent(Role.DATANODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
hdfs.getServiceComponent(Role.SECONDARY_NAMENODE.name()).getServiceComponentHost(hostname1).setState(State.INSTALLED);
ActionQueue aq=new ActionQueue();
ActionManager am=mock(ActionManager.class);
HeartbeatMonitor hm=new HeartbeatMonitor(clusters,aq,am,heartbeatMonitorWakeupIntervalMS,injector);
HeartBeatHandler handler=new HeartBeatHandler(clusters,aq,am,injector);
Register reg=new Register();
reg.setHostname(hostname1);
reg.setResponseId(12);
reg.setTimestamp(System.currentTimeMillis() - 300);
reg.setAgentVersion(ambariMetaInfo.getServerVersion());
HostInfo hi=new HostInfo();
hi.setOS("Centos5");
reg.setHardwareProfile(hi);
handler.handleRegistration(reg);
HeartBeat hb=new HeartBeat();
hb.setHostname(hostname1);
hb.setNodeStatus(new HostStatus(HostStatus.Status.HEALTHY,"cool"));
hb.setTimestamp(System.currentTimeMillis());
hb.setResponseId(12);
handler.handleHeartBeat(hb);
List cmds=hm.generateStatusCommands(hostname1);
assertEquals("HeartbeatMonitor should generate StatusCommands for host1",3,cmds.size());
assertEquals("HDFS",cmds.get(0).getServiceName());
cmds=hm.generateStatusCommands(hostname2);
assertTrue("HeartbeatMonitor should not generate StatusCommands for host2 because it has no services",cmds.isEmpty());
}
Class: org.apache.ambari.server.alerts.AgentHeartbeatAlertRunnableTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testHealthyHostAlert(){
assertEquals(0,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
AgentHeartbeatAlertRunnable runnable=new AgentHeartbeatAlertRunnable();
m_injector.injectMembers(runnable);
runnable.run();
assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
List events=m_listener.getAlertEventInstances(AlertReceivedEvent.class);
assertEquals(1,events.size());
AlertReceivedEvent event=(AlertReceivedEvent)events.get(0);
Alert alert=event.getAlert();
assertEquals("AMBARI",alert.getService());
assertEquals("AMBARI_SERVER",alert.getComponent());
assertEquals(AlertState.OK,alert.getState());
assertEquals(DEFINITION_NAME,alert.getName());
verify(m_definition,m_host,m_cluster,m_clusters,m_definitionDao);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testUnhealthyAlert(){
EasyMock.reset(m_host);
expect(m_host.getState()).andReturn(HostState.HEARTBEAT_LOST).atLeastOnce();
replay(m_host);
assertEquals(0,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
AgentHeartbeatAlertRunnable runnable=new AgentHeartbeatAlertRunnable();
m_injector.injectMembers(runnable);
runnable.run();
assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
List events=m_listener.getAlertEventInstances(AlertReceivedEvent.class);
assertEquals(1,events.size());
AlertReceivedEvent event=(AlertReceivedEvent)events.get(0);
Alert alert=event.getAlert();
assertEquals("AMBARI",alert.getService());
assertEquals("AMBARI_SERVER",alert.getComponent());
assertEquals(AlertState.CRITICAL,alert.getState());
assertEquals(DEFINITION_NAME,alert.getName());
verify(m_definition,m_host,m_cluster,m_clusters,m_definitionDao);
}
Class: org.apache.ambari.server.alerts.StaleAlertRunnableTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that the event is triggerd with a status of OK.
*/
@Test public void testAllAlertsAreCurrent(){
AlertDefinitionEntity definition1=new AlertDefinitionEntity();
definition1.setClusterId(CLUSTER_ID);
definition1.setDefinitionName("foo-definition");
definition1.setServiceName("HDFS");
definition1.setComponentName("NAMENODE");
definition1.setEnabled(true);
definition1.setScheduleInterval(1);
AlertCurrentEntity current1=createNiceMock(AlertCurrentEntity.class);
AlertHistoryEntity history1=createNiceMock(AlertHistoryEntity.class);
expect(current1.getAlertHistory()).andReturn(history1).atLeastOnce();
expect(history1.getAlertDefinition()).andReturn(definition1).atLeastOnce();
expect(current1.getMaintenanceState()).andReturn(MaintenanceState.OFF).atLeastOnce();
expect(current1.getLatestTimestamp()).andReturn(System.currentTimeMillis()).atLeastOnce();
replay(current1,history1);
m_currentAlerts.add(current1);
assertEquals(0,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
StaleAlertRunnable runnable=new StaleAlertRunnable();
m_injector.injectMembers(runnable);
runnable.run();
assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
List events=m_listener.getAlertEventInstances(AlertReceivedEvent.class);
assertEquals(1,events.size());
AlertReceivedEvent event=(AlertReceivedEvent)events.get(0);
Alert alert=event.getAlert();
assertEquals("AMBARI",alert.getService());
assertEquals("AMBARI_SERVER",alert.getComponent());
assertEquals(AlertState.OK,alert.getState());
assertEquals(DEFINITION_NAME,alert.getName());
verify(m_cluster,m_clusters,m_definitionDao);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that a stale alert in maintenance mode doesn't trigger the event.
*/
@Test public void testStaleAlertInMaintenaceMode(){
AlertDefinitionEntity definition1=new AlertDefinitionEntity();
definition1.setClusterId(CLUSTER_ID);
definition1.setDefinitionName("foo-definition");
definition1.setServiceName("HDFS");
definition1.setComponentName("NAMENODE");
definition1.setEnabled(true);
definition1.setScheduleInterval(1);
AlertCurrentEntity current1=createNiceMock(AlertCurrentEntity.class);
AlertHistoryEntity history1=createNiceMock(AlertHistoryEntity.class);
AlertCurrentEntity current2=createNiceMock(AlertCurrentEntity.class);
AlertHistoryEntity history2=createNiceMock(AlertHistoryEntity.class);
expect(current1.getAlertHistory()).andReturn(history1).atLeastOnce();
expect(history1.getAlertDefinition()).andReturn(definition1).atLeastOnce();
expect(current2.getAlertHistory()).andReturn(history2).atLeastOnce();
expect(history2.getAlertDefinition()).andReturn(definition1).atLeastOnce();
expect(current1.getMaintenanceState()).andReturn(MaintenanceState.ON).atLeastOnce();
expect(current1.getLatestTimestamp()).andReturn(1L).atLeastOnce();
expect(current2.getMaintenanceState()).andReturn(MaintenanceState.OFF).atLeastOnce();
expect(current2.getLatestTimestamp()).andReturn(System.currentTimeMillis()).atLeastOnce();
replay(current1,history1,current2,history2);
m_currentAlerts.add(current1);
m_currentAlerts.add(current2);
assertEquals(0,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
StaleAlertRunnable runnable=new StaleAlertRunnable();
m_injector.injectMembers(runnable);
runnable.run();
assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
List events=m_listener.getAlertEventInstances(AlertReceivedEvent.class);
assertEquals(1,events.size());
AlertReceivedEvent event=(AlertReceivedEvent)events.get(0);
Alert alert=event.getAlert();
assertEquals("AMBARI",alert.getService());
assertEquals("AMBARI_SERVER",alert.getComponent());
assertEquals(AlertState.OK,alert.getState());
assertEquals(DEFINITION_NAME,alert.getName());
verify(m_cluster,m_clusters,m_definitionDao);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that a stale alert triggers the event with a status of CRITICAL.
*/
@Test public void testStaleAlert(){
AlertDefinitionEntity definition1=new AlertDefinitionEntity();
definition1.setClusterId(CLUSTER_ID);
definition1.setDefinitionName("foo-definition");
definition1.setServiceName("HDFS");
definition1.setComponentName("NAMENODE");
definition1.setEnabled(true);
definition1.setScheduleInterval(1);
AlertCurrentEntity current1=createNiceMock(AlertCurrentEntity.class);
AlertHistoryEntity history1=createNiceMock(AlertHistoryEntity.class);
expect(current1.getAlertHistory()).andReturn(history1).atLeastOnce();
expect(history1.getAlertDefinition()).andReturn(definition1).atLeastOnce();
expect(current1.getMaintenanceState()).andReturn(MaintenanceState.OFF).atLeastOnce();
expect(current1.getLatestTimestamp()).andReturn(1L).atLeastOnce();
replay(current1,history1);
m_currentAlerts.add(current1);
assertEquals(0,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
StaleAlertRunnable runnable=new StaleAlertRunnable();
m_injector.injectMembers(runnable);
runnable.run();
assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
List events=m_listener.getAlertEventInstances(AlertReceivedEvent.class);
assertEquals(1,events.size());
AlertReceivedEvent event=(AlertReceivedEvent)events.get(0);
Alert alert=event.getAlert();
assertEquals("AMBARI",alert.getService());
assertEquals("AMBARI_SERVER",alert.getComponent());
assertEquals(AlertState.CRITICAL,alert.getState());
assertEquals(DEFINITION_NAME,alert.getName());
verify(m_cluster,m_clusters,m_definitionDao);
}
Class: org.apache.ambari.server.api.AmbariCsrfProtectionFilterTest InternalCallVerifier EqualityVerifier
@Test public void testPostXRequestedBy(){
AmbariCsrfProtectionFilter filter=new AmbariCsrfProtectionFilter();
ContainerRequest containerRequest=createMock(ContainerRequest.class);
InBoundHeaders headers=new InBoundHeaders();
headers.add("X-Requested-By","anything");
expect(containerRequest.getMethod()).andReturn("GET");
expect(containerRequest.getRequestHeaders()).andReturn(headers);
replay(containerRequest);
assertEquals(containerRequest,filter.filter(containerRequest));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetMethod(){
AmbariCsrfProtectionFilter filter=new AmbariCsrfProtectionFilter();
ContainerRequest containerRequest=createMock(ContainerRequest.class);
expect(containerRequest.getMethod()).andReturn("GET");
replay(containerRequest);
assertEquals(containerRequest,filter.filter(containerRequest));
}
Class: org.apache.ambari.server.api.AmbariErrorHandlerTest UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testErrorWithJetty() throws Exception {
Server server=new Server(0);
Configuration configuration=new Configuration();
ServletContextHandler root=new ServletContextHandler(server,"/",ServletContextHandler.SECURITY | ServletContextHandler.SESSIONS);
root.addServlet(HelloServlet.class,"/hello");
root.addServlet(DefaultServlet.class,"/");
root.setErrorHandler(new AmbariErrorHandler(gson,configuration));
server.start();
Connector connector=server.getConnectors()[0];
int localPort=((ServerConnector)connector).getLocalPort();
Client client=new Client();
WebResource resource=client.resource("http://localhost:" + localPort + "/");
ClientResponse successResponse=resource.path("hello").get(ClientResponse.class);
assertEquals(HttpServletResponse.SC_OK,successResponse.getStatus());
ClientResponse failResponse=resource.path("fail").get(ClientResponse.class);
assertEquals(HttpServletResponse.SC_NOT_FOUND,failResponse.getStatus());
try {
String response=failResponse.getEntity(String.class);
System.out.println(response);
Map map;
map=gson.fromJson(response,Map.class);
System.out.println(map);
assertNotNull("Incorrect response status",map.get("status"));
assertNotNull("Incorrect response message",map.get("message"));
}
catch ( JsonSyntaxException e1) {
fail("Incorrect response");
}
server.stop();
}
Class: org.apache.ambari.server.api.handlers.CreateHandlerTest InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__AuthorizationFailure() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createMock(ResourceDefinition.class);
Query query=createStrictMock(Query.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(null).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(resource.getQuery()).andReturn(query);
query.setRenderer(renderer);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.isCreatable()).andReturn(true).anyTimes();
expect(pm.create(resource,body)).andThrow(new AuthorizationException());
replay(request,body,resource,resourceDefinition,query,pm);
Result result=new TestCreateHandler(pm).handleRequest(request);
assertEquals(ResultStatus.STATUS.FORBIDDEN,result.getStatus().getStatus());
verify(request,body,resource,resourceDefinition,query,pm);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Synchronous() throws Exception {
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Query query=createStrictMock(Query.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(null).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(resource.getQuery()).andReturn(query);
query.setRenderer(renderer);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.isCreatable()).andReturn(true).anyTimes();
expect(pm.create(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(request,body,resource,resourceDefinition,query,pm,status,resource1,resource2);
Result result=new TestCreateHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(1,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
assertEquals(ResultStatus.STATUS.CREATED,result.getStatus().getStatus());
verify(request,body,resource,resourceDefinition,query,pm,status,resource1,resource2);
}
BranchVerifier UtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Asynchronous() throws Exception {
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Query query=createStrictMock(Query.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
Resource requestResource=createNiceMock(Resource.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(null).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(resource.getQuery()).andReturn(query);
query.setRenderer(renderer);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.isCreatable()).andReturn(true).anyTimes();
expect(pm.create(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Accepted);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(status.getRequestResource()).andReturn(requestResource).anyTimes();
replay(request,body,resource,resourceDefinition,query,pm,status,resource1,resource2,requestResource);
Result result=new TestCreateHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(2,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
TreeNode statusNode=tree.getChild("request");
assertNotNull(statusNode);
assertEquals(0,statusNode.getChildren().size());
assertSame(requestResource,statusNode.getObject());
assertEquals(ResultStatus.STATUS.ACCEPTED,result.getStatus().getStatus());
verify(request,body,resource,resourceDefinition,query,pm,status,resource1,resource2,requestResource);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Synchronous_NoPropsInBody() throws Exception {
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Query query=createStrictMock(Query.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(null).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(request.getBody()).andReturn(body);
expect(resource.getQuery()).andReturn(query);
query.setRenderer(renderer);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.isCreatable()).andReturn(true).anyTimes();
expect(pm.create(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(request,body,resource,resourceDefinition,query,pm,status,resource1,resource2);
Result result=new TestCreateHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(1,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
assertEquals(ResultStatus.STATUS.CREATED,result.getStatus().getStatus());
verify(request,body,resource,resourceDefinition,query,pm,status,resource1,resource2);
}
Class: org.apache.ambari.server.api.handlers.DeleteHandlerTest BranchVerifier UtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Asynchronous() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createMock(RequestStatus.class);
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
Resource requestResource=createMock(Resource.class);
Query query=createNiceMock(Query.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).anyTimes();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(null).atLeastOnce();
expect(resource.getQuery()).andReturn(query).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
query.setRenderer(renderer);
expect(pm.delete(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Accepted);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(status.getRequestResource()).andReturn(requestResource).anyTimes();
replay(request,body,resource,pm,status,resource1,resource2,requestResource,query);
Result result=new TestDeleteHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(2,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
TreeNode statusNode=tree.getChild("request");
assertNotNull(statusNode);
assertEquals(0,statusNode.getChildren().size());
assertSame(requestResource,statusNode.getObject());
assertEquals(ResultStatus.STATUS.ACCEPTED,result.getStatus().getStatus());
verify(request,body,resource,pm,status,resource1,resource2,requestResource,query);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Synchronous() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createMock(RequestStatus.class);
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
Predicate userPredicate=createNiceMock(Predicate.class);
Query query=createNiceMock(Query.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(userPredicate).atLeastOnce();
expect(resource.getQuery()).andReturn(query).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
query.setRenderer(renderer);
query.setUserPredicate(userPredicate);
expect(pm.delete(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
Result result=new TestDeleteHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(1,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
assertEquals(ResultStatus.STATUS.OK,result.getStatus().getStatus());
verify(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__AuthorizationFailure() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
Query query=createMock(Query.class);
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource).anyTimes();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(null).atLeastOnce();
expect(resource.getQuery()).andReturn(query).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
query.setRenderer(renderer);
expect(pm.delete(resource,body)).andThrow(new AuthorizationException());
replay(request,body,resource,pm,query);
Result result=new TestDeleteHandler(pm).handleRequest(request);
assertEquals(ResultStatus.STATUS.FORBIDDEN,result.getStatus().getStatus());
verify(request,body,resource,pm,query);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Synchronous_NoPropsInBody() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createMock(RequestStatus.class);
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
Predicate userPredicate=createNiceMock(Predicate.class);
Query query=createNiceMock(Query.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(userPredicate).atLeastOnce();
expect(resource.getQuery()).andReturn(query).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
query.setRenderer(renderer);
query.setUserPredicate(userPredicate);
expect(pm.delete(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
Result result=new TestDeleteHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(1,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
assertEquals(ResultStatus.STATUS.OK,result.getStatus().getStatus());
verify(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testIdempotentPersist() throws Exception {
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
PersistenceManager pm=createNiceMock(PersistenceManager.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource resource1=createNiceMock(Resource.class);
Resource requestResource=createNiceMock(Resource.class);
ConfigGroupNotFoundException configGroupNotFoundException=createNiceMock(ConfigGroupNotFoundException.class);
Query query=createNiceMock(Query.class);
expect(request.getResource()).andReturn(resource).anyTimes();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(pm.delete(resource,body)).andThrow(new NoSuchResourceException("Configgroup not exist",configGroupNotFoundException));
replay(request,body,resource,pm,status,resource1,requestResource,query);
Result result=new TestDeleteHandler(pm).persist(resource,body);
assertNotNull(result);
assertEquals(ResultStatus.STATUS.ACCEPTED,result.getStatus().getStatus());
}
Class: org.apache.ambari.server.api.handlers.QueryCreateHandlerTest InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest_AuthorizationFailure() throws Exception {
final String BODY_STRING="Body string";
Request request=createMock(Request.class);
RequestBody body=createMock(RequestBody.class);
ResourceInstance resourceInstance=createMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createMock(ResourceDefinition.class);
ResourceInstanceFactory resourceInstanceFactory=createMock(ResourceInstanceFactory.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
Result result=createMock(Result.class);
ResourceInstance subResource=createMock(ResourceInstance.class);
ResourceDefinition subResourceDefinition=createMock(ResourceDefinition.class);
ClusterController controller=createMock(ClusterController.class);
Schema serviceSchema=createMock(Schema.class);
Schema componentSchema=createMock(Schema.class);
String resourceKeyProperty="resourceKeyProperty";
String createKeyProperty="createKeyProperty";
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
PersistenceManager pm=createMock(PersistenceManager.class);
ResourceInstance createResource=createMock(ResourceInstance.class);
RequestHandler readHandler=createStrictMock(RequestHandler.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
Map mapIds=new HashMap();
Set setRequestProps=new HashSet();
Map mapProperties=new HashMap();
Set> arraySet=new HashSet>();
mapProperties.put("components",arraySet);
Map map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"SECONDARY_NAMENODE");
arraySet.add(map);
map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"HDFS_CLIENT");
arraySet.add(map);
setRequestProps.add(new NamedPropertySet("",mapProperties));
Map mapSubResources=new HashMap();
mapSubResources.put("components",subResource);
TreeNode resultTree=new TreeNodeImpl(null,null,"result");
resultTree.addChild(resource1,"resource1");
resultTree.addChild(resource2,"resource2");
expect(readHandler.handleRequest(request)).andReturn(result).atLeastOnce();
expect(result.getStatus()).andReturn(resultStatus).atLeastOnce();
expect(resultStatus.isErrorState()).andReturn(false).atLeastOnce();
expect(body.getBody()).andReturn(BODY_STRING).atLeastOnce();
expect(request.getResource()).andReturn(resourceInstance).atLeastOnce();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(body.getNamedPropertySets()).andReturn(setRequestProps).atLeastOnce();
expect(resourceInstance.getResourceDefinition()).andReturn(resourceDefinition).atLeastOnce();
expect(resourceInstance.getKeyValueMap()).andReturn(mapIds).atLeastOnce();
expect(resourceInstance.getSubResources()).andReturn(mapSubResources).atLeastOnce();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).atLeastOnce();
expect(subResource.getResourceDefinition()).andReturn(subResourceDefinition).atLeastOnce();
expect(subResourceDefinition.getType()).andReturn(Resource.Type.Component).atLeastOnce();
expect(controller.getSchema(Resource.Type.Service)).andReturn(serviceSchema).atLeastOnce();
expect(controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).atLeastOnce();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(resourceKeyProperty).atLeastOnce();
expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(createKeyProperty).atLeastOnce();
expect(result.getResultTree()).andReturn(resultTree).atLeastOnce();
expect(resource1.getPropertyValue(resourceKeyProperty)).andReturn("id1").atLeastOnce();
expect(resource2.getPropertyValue(resourceKeyProperty)).andReturn("id2").atLeastOnce();
expect(resourceInstanceFactory.createResource(Resource.Type.Component,mapIds)).andReturn(createResource).atLeastOnce();
expect(pm.create(anyObject(ResourceInstance.class),anyObject(RequestBody.class))).andThrow(new AuthorizationException());
replay(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,resourceInstanceFactory,createResource,readHandler,resultStatus);
Result testResult=new TestQueryCreateHandler(resourceInstanceFactory,controller,pm,readHandler).handleRequest(request);
assertEquals(ResultStatus.STATUS.FORBIDDEN,testResult.getStatus().getStatus());
verify(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,resourceInstanceFactory,createResource,readHandler,resultStatus);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testHandleRequest() throws Exception {
final String BODY_STRING="Body string";
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resourceInstance=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
ResourceInstanceFactory resourceInstanceFactory=createNiceMock(ResourceInstanceFactory.class);
Query query=createNiceMock(Query.class);
Predicate predicate=createNiceMock(Predicate.class);
Result result=createNiceMock(Result.class);
ResourceInstance subResource=createNiceMock(ResourceInstance.class);
ResourceDefinition subResourceDefinition=createNiceMock(ResourceDefinition.class);
ClusterController controller=createNiceMock(ClusterController.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
String resourceKeyProperty="resourceKeyProperty";
String createKeyProperty="createKeyProperty";
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
PersistenceManager pm=createNiceMock(PersistenceManager.class);
ResourceInstance createResource=createNiceMock(ResourceInstance.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource statusResource1=createNiceMock(Resource.class);
Resource statusResource2=createNiceMock(Resource.class);
RequestHandler readHandler=createStrictMock(RequestHandler.class);
ResultStatus resultStatus=createNiceMock(ResultStatus.class);
Capture bodyCapture=new Capture();
Map mapIds=new HashMap();
Set setRequestProps=new HashSet();
Map mapProperties=new HashMap();
Set> arraySet=new HashSet>();
mapProperties.put("components",arraySet);
Map map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"SECONDARY_NAMENODE");
arraySet.add(map);
map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"HDFS_CLIENT");
arraySet.add(map);
setRequestProps.add(new NamedPropertySet("",mapProperties));
Set> setCreateProps=new HashSet>();
Map map1=new HashMap();
map1.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"SECONDARY_NAMENODE");
map1.put(createKeyProperty,"id1");
setCreateProps.add(map1);
Map map2=new HashMap();
map2.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"SECONDARY_NAMENODE");
map2.put(createKeyProperty,"id2");
setCreateProps.add(map2);
Map map3=new HashMap();
map3.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"HDFS_CLIENT");
map3.put(createKeyProperty,"id1");
setCreateProps.add(map3);
Map map4=new HashMap();
map4.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"HDFS_CLIENT");
map4.put(createKeyProperty,"id2");
setCreateProps.add(map4);
Map mapSubResources=new HashMap();
mapSubResources.put("components",subResource);
TreeNode resultTree=new TreeNodeImpl(null,null,"result");
resultTree.addChild(resource1,"resource1");
resultTree.addChild(resource2,"resource2");
Set setStatusResources=new HashSet();
setStatusResources.add(statusResource1);
setStatusResources.add(statusResource2);
expect(readHandler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false);
expect(result.getResultTree()).andReturn(resultTree);
expect(body.getBody()).andReturn(BODY_STRING).anyTimes();
expect(request.getResource()).andReturn(resourceInstance).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(body.getNamedPropertySets()).andReturn(setRequestProps).anyTimes();
expect(resourceInstance.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceInstance.getKeyValueMap()).andReturn(mapIds).anyTimes();
expect(resourceInstance.getSubResources()).andReturn(mapSubResources).anyTimes();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(resourceDefinition.isCreatable()).andReturn(true).anyTimes();
expect(subResource.getResourceDefinition()).andReturn(subResourceDefinition).anyTimes();
expect(subResourceDefinition.getType()).andReturn(Resource.Type.Component).anyTimes();
expect(controller.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(controller.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(resourceKeyProperty).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(createKeyProperty).anyTimes();
expect(result.getResultTree()).andReturn(resultTree).anyTimes();
expect(resource1.getPropertyValue(resourceKeyProperty)).andReturn("id1").anyTimes();
expect(resource2.getPropertyValue(resourceKeyProperty)).andReturn("id2").anyTimes();
expect(resourceInstanceFactory.createResource(Resource.Type.Component,mapIds)).andReturn(createResource).anyTimes();
expect(createResource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(pm.create(same(createResource),capture(bodyCapture))).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete).anyTimes();
expect(status.getAssociatedResources()).andReturn(setStatusResources).anyTimes();
expect(statusResource1.getType()).andReturn(Resource.Type.Component).anyTimes();
expect(statusResource2.getType()).andReturn(Resource.Type.Component).anyTimes();
replay(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,resourceInstanceFactory,createResource,status,statusResource1,statusResource2,readHandler,resultStatus);
Result testResult=new TestQueryCreateHandler(resourceInstanceFactory,controller,pm,readHandler).handleRequest(request);
Collection> children=testResult.getResultTree().getChild("resources").getChildren();
assertEquals(2,children.size());
boolean containsStatusResource1=false;
boolean containsStatusResource2=false;
for ( TreeNode child : children) {
Resource r=child.getObject();
if (r == statusResource1) {
containsStatusResource1=true;
}
else if (r == statusResource2) {
containsStatusResource2=true;
}
}
assertTrue(containsStatusResource1);
assertTrue(containsStatusResource2);
assertEquals(ResultStatus.STATUS.CREATED,testResult.getStatus().getStatus());
RequestBody createBody=bodyCapture.getValue();
assertEquals(BODY_STRING,createBody.getBody());
assertEquals(4,createBody.getPropertySets().size());
assertEquals(setCreateProps,createBody.getPropertySets());
verify(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,resourceInstanceFactory,createResource,status,statusResource1,statusResource2,readHandler,resultStatus);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest_MultipleSubResources() throws Exception {
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resourceInstance=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
ResourceInstanceFactory resourceInstanceFactory=createNiceMock(ResourceInstanceFactory.class);
Query query=createNiceMock(Query.class);
Predicate predicate=createNiceMock(Predicate.class);
Result result=createNiceMock(Result.class);
ResourceInstance subResource1=createNiceMock(ResourceInstance.class);
ResourceInstance subResource2=createNiceMock(ResourceInstance.class);
ResourceDefinition subResourceDefinition1=createNiceMock(ResourceDefinition.class);
ResourceDefinition subResourceDefinition2=createNiceMock(ResourceDefinition.class);
ClusterController controller=createNiceMock(ClusterController.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema subResSchema1=createNiceMock(Schema.class);
Schema subResSchema2=createNiceMock(Schema.class);
String resourceKeyProperty="resourceKeyProperty";
String createKeyProperty="createKeyProperty";
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
PersistenceManager pm=createNiceMock(PersistenceManager.class);
ResourceInstance createResource=createNiceMock(ResourceInstance.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource statusResource1=createNiceMock(Resource.class);
Resource statusResource2=createNiceMock(Resource.class);
RequestHandler readHandler=createStrictMock(RequestHandler.class);
ResultStatus queryResultStatus=createNiceMock(ResultStatus.class);
Map mapIds=new HashMap();
Set setRequestProps=new HashSet();
Map mapProperties=new HashMap();
Set> arraySet=new HashSet>();
mapProperties.put("foo",arraySet);
Map map=new HashMap();
map.put("prop","val");
arraySet.add(map);
arraySet=new HashSet>();
mapProperties.put("bar",arraySet);
map=new HashMap();
map.put("prop","val");
arraySet.add(map);
setRequestProps.add(new NamedPropertySet("",mapProperties));
Map mapSubResources=new HashMap();
mapSubResources.put("foo",subResource1);
mapSubResources.put("bar",subResource2);
TreeNode resultTree=new TreeNodeImpl(null,null,"result");
resultTree.addChild(resource1,"resource1");
resultTree.addChild(resource2,"resource2");
expect(readHandler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(queryResultStatus).anyTimes();
expect(queryResultStatus.isErrorState()).andReturn(false);
expect(result.getResultTree()).andReturn(resultTree);
expect(request.getResource()).andReturn(resourceInstance).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(body.getNamedPropertySets()).andReturn(setRequestProps).anyTimes();
expect(resourceInstance.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceInstance.getKeyValueMap()).andReturn(mapIds).anyTimes();
expect(resourceInstance.getSubResources()).andReturn(mapSubResources).anyTimes();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(subResource1.getResourceDefinition()).andReturn(subResourceDefinition1).anyTimes();
expect(subResourceDefinition1.getType()).andReturn(Resource.Type.Component).anyTimes();
expect(subResource2.getResourceDefinition()).andReturn(subResourceDefinition2).anyTimes();
expect(subResourceDefinition2.getType()).andReturn(Resource.Type.HostComponent).anyTimes();
expect(controller.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(controller.getSchema(Resource.Type.Component)).andReturn(subResSchema1).anyTimes();
expect(controller.getSchema(Resource.Type.HostComponent)).andReturn(subResSchema2).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn(resourceKeyProperty).anyTimes();
expect(subResSchema1.getKeyPropertyId(Resource.Type.Service)).andReturn(createKeyProperty).anyTimes();
expect(subResSchema2.getKeyPropertyId(Resource.Type.Service)).andReturn(createKeyProperty).anyTimes();
expect(result.getResultTree()).andReturn(resultTree).anyTimes();
expect(resource1.getPropertyValue(resourceKeyProperty)).andReturn("id1").anyTimes();
expect(resource2.getPropertyValue(resourceKeyProperty)).andReturn("id2").anyTimes();
replay(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource1,subResource2,subResourceDefinition1,subResourceDefinition2,controller,serviceSchema,subResSchema1,subResSchema2,resource1,resource2,pm,resourceInstanceFactory,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
Result testResult=new TestQueryCreateHandler(resourceInstanceFactory,controller,pm,readHandler).handleRequest(request);
ResultStatus resultStatus=testResult.getStatus();
assertEquals(ResultStatus.STATUS.BAD_REQUEST,resultStatus.getStatus());
assertEquals("Invalid Request: Multiple sub-resource types may not be created in the same request.",resultStatus.getMessage());
verify(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource1,subResource2,subResourceDefinition1,subResourceDefinition2,controller,serviceSchema,subResSchema1,subResSchema2,resource1,resource2,pm,resourceInstanceFactory,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
}
InternalCallVerifier EqualityVerifier
@Test public void tesHandleRequest_NoSubResourceNameSpecified(){
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resourceInstance=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Query query=createNiceMock(Query.class);
Predicate predicate=createNiceMock(Predicate.class);
Result result=createNiceMock(Result.class);
ResourceInstance subResource=createNiceMock(ResourceInstance.class);
ResourceDefinition subResourceDefinition=createNiceMock(ResourceDefinition.class);
ClusterController controller=createNiceMock(ClusterController.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
String resourceKeyProperty="resourceKeyProperty";
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
PersistenceManager pm=createNiceMock(PersistenceManager.class);
ResourceInstance createResource=createNiceMock(ResourceInstance.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource statusResource1=createNiceMock(Resource.class);
Resource statusResource2=createNiceMock(Resource.class);
RequestHandler readHandler=createStrictMock(RequestHandler.class);
ResultStatus queryResultStatus=createNiceMock(ResultStatus.class);
Map mapIds=new HashMap();
Set setRequestProps=new HashSet();
Map mapProperties=new HashMap();
Set> arraySet=new HashSet>();
mapProperties.put("",arraySet);
Map map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"SECONDARY_NAMENODE");
arraySet.add(map);
map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"HDFS_CLIENT");
arraySet.add(map);
setRequestProps.add(new NamedPropertySet("",mapProperties));
TreeNode resultTree=new TreeNodeImpl(null,null,"result");
resultTree.addChild(resource1,"resource1");
resultTree.addChild(resource2,"resource2");
expect(readHandler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(queryResultStatus).anyTimes();
expect(queryResultStatus.isErrorState()).andReturn(false);
expect(result.getResultTree()).andReturn(resultTree);
expect(request.getResource()).andReturn(resourceInstance).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(body.getNamedPropertySets()).andReturn(setRequestProps).anyTimes();
expect(resourceInstance.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceInstance.getKeyValueMap()).andReturn(mapIds).anyTimes();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(controller.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(result.getResultTree()).andReturn(resultTree).anyTimes();
expect(resource1.getPropertyValue(resourceKeyProperty)).andReturn("id1").anyTimes();
expect(resource2.getPropertyValue(resourceKeyProperty)).andReturn("id2").anyTimes();
replay(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
Result testResult=new TestQueryCreateHandler(null,controller,pm,readHandler).handleRequest(request);
ResultStatus resultStatus=testResult.getStatus();
assertEquals(ResultStatus.STATUS.BAD_REQUEST,resultStatus.getStatus());
assertEquals("Invalid Request: A sub-resource name must be supplied.",resultStatus.getMessage());
verify(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
}
InternalCallVerifier EqualityVerifier
@Test public void tesHandleRequest_NoSubResourcesSpecified(){
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resourceInstance=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Query query=createNiceMock(Query.class);
Predicate predicate=createNiceMock(Predicate.class);
Result result=createNiceMock(Result.class);
ResourceInstance subResource=createNiceMock(ResourceInstance.class);
ResourceDefinition subResourceDefinition=createNiceMock(ResourceDefinition.class);
ClusterController controller=createNiceMock(ClusterController.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
String resourceKeyProperty="resourceKeyProperty";
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
PersistenceManager pm=createNiceMock(PersistenceManager.class);
ResourceInstance createResource=createNiceMock(ResourceInstance.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource statusResource1=createNiceMock(Resource.class);
Resource statusResource2=createNiceMock(Resource.class);
RequestHandler readHandler=createStrictMock(RequestHandler.class);
ResultStatus queryResultStatus=createNiceMock(ResultStatus.class);
Map mapIds=new HashMap();
Set setRequestProps=new HashSet();
TreeNode resultTree=new TreeNodeImpl(null,null,"result");
resultTree.addChild(resource1,"resource1");
resultTree.addChild(resource2,"resource2");
expect(readHandler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(queryResultStatus).anyTimes();
expect(queryResultStatus.isErrorState()).andReturn(false);
expect(result.getResultTree()).andReturn(resultTree);
expect(request.getResource()).andReturn(resourceInstance).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(body.getNamedPropertySets()).andReturn(setRequestProps).anyTimes();
expect(resourceInstance.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceInstance.getKeyValueMap()).andReturn(mapIds).anyTimes();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(controller.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(result.getResultTree()).andReturn(resultTree).anyTimes();
expect(resource1.getPropertyValue(resourceKeyProperty)).andReturn("id1").anyTimes();
expect(resource2.getPropertyValue(resourceKeyProperty)).andReturn("id2").anyTimes();
replay(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
Result testResult=new TestQueryCreateHandler(null,controller,pm,readHandler).handleRequest(request);
ResultStatus resultStatus=testResult.getStatus();
assertEquals(ResultStatus.STATUS.BAD_REQUEST,resultStatus.getStatus());
assertEquals("Invalid Request: A minimum of one sub-resource must be specified for creation.",resultStatus.getMessage());
verify(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
}
InternalCallVerifier EqualityVerifier
@Test public void tesHandleRequest_InvalidSubResSpecified(){
Request request=createNiceMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resourceInstance=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Query query=createNiceMock(Query.class);
Predicate predicate=createNiceMock(Predicate.class);
Result result=createNiceMock(Result.class);
ResourceInstance subResource=createNiceMock(ResourceInstance.class);
ResourceDefinition subResourceDefinition=createNiceMock(ResourceDefinition.class);
ClusterController controller=createNiceMock(ClusterController.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
String resourceKeyProperty="resourceKeyProperty";
Resource resource1=createNiceMock(Resource.class);
Resource resource2=createNiceMock(Resource.class);
PersistenceManager pm=createNiceMock(PersistenceManager.class);
ResourceInstance createResource=createNiceMock(ResourceInstance.class);
RequestStatus status=createNiceMock(RequestStatus.class);
Resource statusResource1=createNiceMock(Resource.class);
Resource statusResource2=createNiceMock(Resource.class);
RequestHandler readHandler=createStrictMock(RequestHandler.class);
ResultStatus queryResultStatus=createNiceMock(ResultStatus.class);
Map mapIds=new HashMap();
Set setRequestProps=new HashSet();
Map mapProperties=new HashMap();
Set> arraySet=new HashSet>();
mapProperties.put("INVALID",arraySet);
Map map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"SECONDARY_NAMENODE");
arraySet.add(map);
map=new HashMap();
map.put(PropertyHelper.getPropertyId("ServiceComponentInfo","component_name"),"HDFS_CLIENT");
arraySet.add(map);
setRequestProps.add(new NamedPropertySet("",mapProperties));
Map mapSubResources=new HashMap();
mapSubResources.put("components",subResource);
TreeNode resultTree=new TreeNodeImpl(null,null,"result");
resultTree.addChild(resource1,"resource1");
resultTree.addChild(resource2,"resource2");
expect(readHandler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(queryResultStatus).anyTimes();
expect(queryResultStatus.isErrorState()).andReturn(false);
expect(result.getResultTree()).andReturn(resultTree);
expect(request.getResource()).andReturn(resourceInstance).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(body.getNamedPropertySets()).andReturn(setRequestProps).anyTimes();
expect(resourceInstance.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceInstance.getKeyValueMap()).andReturn(mapIds).anyTimes();
expect(resourceInstance.getSubResources()).andReturn(mapSubResources).anyTimes();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(controller.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(result.getResultTree()).andReturn(resultTree).anyTimes();
expect(resource1.getPropertyValue(resourceKeyProperty)).andReturn("id1").anyTimes();
expect(resource2.getPropertyValue(resourceKeyProperty)).andReturn("id2").anyTimes();
replay(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
Result testResult=new TestQueryCreateHandler(null,controller,pm,readHandler).handleRequest(request);
ResultStatus resultStatus=testResult.getStatus();
assertEquals(ResultStatus.STATUS.BAD_REQUEST,resultStatus.getStatus());
assertEquals("Invalid Request: The specified sub-resource name is not valid: 'INVALID'.",resultStatus.getMessage());
verify(request,body,resourceInstance,resourceDefinition,query,predicate,result,subResource,subResourceDefinition,controller,serviceSchema,componentSchema,resource1,resource2,pm,createResource,status,statusResource1,statusResource2,readHandler,queryResultStatus);
}
Class: org.apache.ambari.server.api.handlers.ReadHandlerTest InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__SystemException() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(Collections.emptyMap());
expect(request.getQueryPredicate()).andReturn(predicate);
query.setUserPredicate(predicate);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
SystemException systemException=new SystemException("testMsg",new RuntimeException());
expect(query.execute()).andThrow(systemException);
replay(request,resource,query,predicate);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.SERVER_ERROR,result.getStatus().getStatus());
assertEquals(systemException.toString(),result.getStatus().getMessage());
verify(request,resource,query,predicate);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__InvalidField(){
Request request=createNiceMock(Request.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
Query query=createStrictMock(Query.class);
Map mapPartialResponseFields=new HashMap();
mapPartialResponseFields.put("foo/bar",null);
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource);
expect(request.getFields()).andReturn(mapPartialResponseFields);
expect(request.getRenderer()).andReturn(renderer);
expect(resource.getQuery()).andReturn(query);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
query.addProperty("foo/bar",null);
expectLastCall().andThrow(new IllegalArgumentException("testMsg"));
replay(request,resource,query);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.BAD_REQUEST,result.getStatus().getStatus());
assertEquals("testMsg",result.getStatus().getMessage());
verify(request,resource,query);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__NoSuchParentResourceException() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
NoSuchParentResourceException exception=new NoSuchParentResourceException("exceptionMsg",new RuntimeException());
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(Collections.emptyMap());
expect(request.getQueryPredicate()).andReturn(predicate);
query.setUserPredicate(predicate);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
expect(query.execute()).andThrow(exception);
replay(request,resource,query,predicate);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.NOT_FOUND,result.getStatus().getStatus());
assertEquals("exceptionMsg",result.getStatus().getMessage());
verify(request,resource,query,predicate);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__AuthorizationException() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(Collections.emptyMap());
expect(request.getQueryPredicate()).andReturn(predicate);
query.setUserPredicate(predicate);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
AuthorizationException authorizationException=new AuthorizationException("testMsg");
expect(query.execute()).andThrow(authorizationException);
replay(request,resource,query,predicate);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.FORBIDDEN,result.getStatus().getStatus());
assertEquals(authorizationException.getMessage(),result.getStatus().getMessage());
verify(request,resource,query,predicate);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__UnsupportedPropertyException() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
Renderer renderer=new DefaultRenderer();
UnsupportedPropertyException exception=new UnsupportedPropertyException(Resource.Type.Cluster,Collections.singleton("foo"));
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(Collections.emptyMap());
expect(request.getQueryPredicate()).andReturn(predicate);
query.setUserPredicate(predicate);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
expect(query.execute()).andThrow(exception);
replay(request,resource,query,predicate);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.BAD_REQUEST,result.getStatus().getStatus());
assertEquals(exception.getMessage(),result.getStatus().getMessage());
verify(request,resource,query,predicate);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__NoSuchResourceException_OK() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
NoSuchResourceException exception=new NoSuchResourceException("msg",new RuntimeException());
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(Collections.emptyMap());
expect(request.getQueryPredicate()).andReturn(predicate).anyTimes();
query.setUserPredicate(predicate);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
expect(query.execute()).andThrow(exception);
replay(request,resource,query,predicate);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.OK,result.getStatus().getStatus());
verify(request,resource,query,predicate);
}
InternalCallVerifier EqualityVerifier
@Test public void testHandleRequest__NoSuchResourceException_NOT_FOUND() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
NoSuchResourceException exception=new NoSuchResourceException("msg",new RuntimeException());
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(Collections.emptyMap());
expect(request.getQueryPredicate()).andReturn(null).anyTimes();
query.setUserPredicate(null);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
expect(query.execute()).andThrow(exception);
replay(request,resource,query);
ReadHandler handler=new ReadHandler();
Result result=handler.handleRequest(request);
assertEquals(ResultStatus.STATUS.NOT_FOUND,result.getStatus().getStatus());
assertEquals(exception.getMessage(),result.getStatus().getMessage());
verify(request,resource,query);
}
InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testHandleRequest__OK() throws Exception {
Request request=createStrictMock(Request.class);
ResourceInstance resource=createStrictMock(ResourceInstance.class);
Query query=createMock(Query.class);
Predicate predicate=createMock(Predicate.class);
Result result=createStrictMock(Result.class);
Renderer renderer=new DefaultRenderer();
Capture resultStatusCapture=new Capture();
Map mapPartialResponseFields=new HashMap();
mapPartialResponseFields.put("foo",null);
mapPartialResponseFields.put("bar/c",null);
mapPartialResponseFields.put("bar/d/e",null);
mapPartialResponseFields.put("category/",null);
expect(request.getResource()).andReturn(resource);
expect(resource.getQuery()).andReturn(query);
expect(request.getPageRequest()).andReturn(null);
expect(request.getSortRequest()).andReturn(null);
expect(request.getRenderer()).andReturn(renderer);
expect(request.getFields()).andReturn(mapPartialResponseFields);
query.addProperty("foo",null);
query.addProperty("bar/c",null);
query.addProperty("bar/d/e",null);
query.addProperty("category/",null);
expect(request.getQueryPredicate()).andReturn(predicate);
query.setUserPredicate(predicate);
query.setPageRequest(null);
query.setSortRequest(null);
query.setRenderer(renderer);
expect(query.execute()).andReturn(result);
result.setResultStatus(capture(resultStatusCapture));
replay(request,resource,query,predicate,result);
ReadHandler handler=new ReadHandler();
assertSame(result,handler.handleRequest(request));
assertEquals(ResultStatus.STATUS.OK,resultStatusCapture.getValue().getStatus());
verify(request,resource,query,predicate,result);
}
Class: org.apache.ambari.server.api.handlers.UpdateHandlerTest BranchVerifier UtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Asynchronous() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createMock(RequestStatus.class);
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
Resource requestResource=createMock(Resource.class);
Predicate userPredicate=createNiceMock(Predicate.class);
Query query=createNiceMock(Query.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(request.getQueryPredicate()).andReturn(userPredicate).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(resource.getQuery()).andReturn(query).atLeastOnce();
query.setRenderer(renderer);
query.setUserPredicate(userPredicate);
expect(pm.update(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Accepted);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(status.getRequestResource()).andReturn(requestResource).anyTimes();
replay(request,body,resource,pm,status,resource1,resource2,requestResource,userPredicate,query);
Result result=new TestUpdateHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(2,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
TreeNode statusNode=tree.getChild("request");
assertNotNull(statusNode);
assertEquals(0,statusNode.getChildren().size());
assertSame(requestResource,statusNode.getObject());
assertEquals(ResultStatus.STATUS.ACCEPTED,result.getStatus().getStatus());
verify(request,body,resource,pm,status,resource1,resource2,requestResource,userPredicate,query);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__AuthorizationFailure() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
Predicate userPredicate=createMock(Predicate.class);
Query query=createMock(Query.class);
Renderer renderer=new DefaultRenderer();
expect(request.getResource()).andReturn(resource).atLeastOnce();
expect(request.getBody()).andReturn(body).atLeastOnce();
expect(request.getQueryPredicate()).andReturn(userPredicate).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer).atLeastOnce();
expect(resource.getQuery()).andReturn(query).atLeastOnce();
query.setRenderer(renderer);
query.setUserPredicate(userPredicate);
expect(pm.update(resource,body)).andThrow(new AuthorizationException());
replay(request,body,resource,pm,userPredicate,query);
Result result=new TestUpdateHandler(pm).handleRequest(request);
assertNotNull(result);
assertEquals(ResultStatus.STATUS.FORBIDDEN,result.getStatus().getStatus());
verify(request,body,resource,pm,userPredicate,query);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Synchronous() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createMock(RequestStatus.class);
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
Predicate userPredicate=createNiceMock(Predicate.class);
Query query=createNiceMock(Query.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(request.getQueryPredicate()).andReturn(userPredicate).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(resource.getQuery()).andReturn(query).atLeastOnce();
query.setRenderer(renderer);
query.setUserPredicate(userPredicate);
expect(pm.update(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
Result result=new TestUpdateHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(1,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
assertEquals(ResultStatus.STATUS.OK,result.getStatus().getStatus());
verify(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHandleRequest__Synchronous_NoPropsInBody() throws Exception {
Request request=createMock(Request.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createMock(ResourceInstance.class);
PersistenceManager pm=createStrictMock(PersistenceManager.class);
RequestStatus status=createMock(RequestStatus.class);
Resource resource1=createMock(Resource.class);
Resource resource2=createMock(Resource.class);
Predicate userPredicate=createNiceMock(Predicate.class);
Query query=createNiceMock(Query.class);
Renderer renderer=new DefaultRenderer();
Set setResources=new HashSet();
setResources.add(resource1);
setResources.add(resource2);
expect(request.getResource()).andReturn(resource).anyTimes();
expect(request.getBody()).andReturn(body).anyTimes();
expect(request.getQueryPredicate()).andReturn(userPredicate).atLeastOnce();
expect(request.getRenderer()).andReturn(renderer);
expect(resource.getQuery()).andReturn(query).atLeastOnce();
query.setRenderer(renderer);
query.setUserPredicate(userPredicate);
expect(pm.update(resource,body)).andReturn(status);
expect(status.getStatus()).andReturn(RequestStatus.Status.Complete);
expect(status.getAssociatedResources()).andReturn(setResources);
expect(resource1.getType()).andReturn(Resource.Type.Cluster).anyTimes();
expect(resource2.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
Result result=new TestUpdateHandler(pm).handleRequest(request);
assertNotNull(result);
TreeNode tree=result.getResultTree();
assertEquals(1,tree.getChildren().size());
TreeNode resourcesNode=tree.getChild("resources");
assertEquals(2,resourcesNode.getChildren().size());
boolean foundResource1=false;
boolean foundResource2=false;
for ( TreeNode child : resourcesNode.getChildren()) {
Resource r=child.getObject();
if (r == resource1 && !foundResource1) {
foundResource1=true;
}
else if (r == resource2 && !foundResource2) {
foundResource2=true;
}
else {
fail();
}
}
assertEquals(ResultStatus.STATUS.OK,result.getStatus().getStatus());
verify(request,body,resource,pm,status,resource1,resource2,userPredicate,query);
}
Class: org.apache.ambari.server.api.predicate.QueryLexerTest InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreFieldsSyntax___fieldsFirst() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("fields=foo,bar&foo=1");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignore__multipleIgnoreFields() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("fields=a/b&foo=1&_=5555555");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreFieldsSyntax___fieldsLast() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo=1&fields=foo,bar");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreFieldsSyntax___noPredicate() throws InvalidQueryException {
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("fields=foo,bar");
assertEquals(0,tokens.length);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignore__multipleConsecutiveIgnoreFields() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo=1&fields=a/b&_=5555555");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreUnderscoreSyntax___fieldsLast() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo=1&_=11111");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_matchesRegexp() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".matches("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"StackConfigurations/property_type"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"(([^=])|=|!=),.in(&).*USER.*.isEmpty(a).matches(b)"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"|"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".matches("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"StackConfigurations/property_type"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"fields format to from .*GROUP.*"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("(StackConfigurations/property_type.matches((([^=])|=|!=),.in(&).*USER.*" + ".isEmpty(a).matches(b))|StackConfigurations/property_type.matches(fields format to from .*GROUP.*))");
assertArrayEquals("All characters between \".matches(\" and corresponding closing \")\" bracket should " + "come to VALUE_OPERAND.",listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_matchesRegexp_simple() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".matches("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"StackConfigurations/property_type"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"(.*USER.*)|(.*GROUP.*)"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("StackConfigurations/property_type.matches((.*USER.*)|(.*GROUP.*))");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignore__multipleConsecutiveIgnoreFields2() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("fields=a/b&_=5555555&foo=1");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreFormatSyntax___formatFirst() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("format=default&foo=1");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testInOperator() throws Exception {
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo.in(one, two, 3)");
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".in("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"one, two, 3"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testUnaryNot() throws Exception {
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("!foo<5");
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.LOGICAL_UNARY_OPERATOR,"!"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"<"));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"5"));
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreUnderscoreSyntax___noPredicate() throws InvalidQueryException {
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("_=1");
assertEquals(0,tokens.length);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreFormatSyntax___noPredicate() throws InvalidQueryException {
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("format=default");
assertEquals(0,tokens.length);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignore__userDefined() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"bar"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
QueryLexer lexer=new QueryLexer();
Set propertiesToIgnore=new HashSet();
propertiesToIgnore.add("ignore1");
propertiesToIgnore.add("otherIgnore");
propertiesToIgnore.add("ba");
propertiesToIgnore.add("ple");
Token[] tokens=lexer.tokens("ba=gone&foo=1&ignore1=pleaseIgnoreMe&fields=a/b&bar=2&otherIgnore=byebye",propertiesToIgnore);
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignore__fieldsMiddle2() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"bar"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo=1&fields=a/b,c&_=123&bar=2");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testIsEmptyOperator() throws Exception {
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("category1.isEmpty()");
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".isEmpty("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"category1"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_multipleBrackets() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"<"));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"a"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"<="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"b"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,">="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"c"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"3"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"|"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"!="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"d"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"4"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("a<1&(b<=2&(c>=3|d!=4))");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreUnderscoreSyntax___fieldsFirst() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("_=111111&foo=1");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignoreFormatSyntax___formatLast() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo=1&format=foo");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_ignore__fieldsMiddle() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"bar"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("foo=1&fields=a/b&bar=2");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
InternalCallVerifier EqualityVerifier
@Test public void testTokens_simple() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"a"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"<="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"b"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"|"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,">"));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"c"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"3"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryLexer lexer=new QueryLexer();
Token[] tokens=lexer.tokens("a=1&(b<=2|c>3)");
assertArrayEquals(listTokens.toArray(new Token[listTokens.size()]),tokens);
}
Class: org.apache.ambari.server.api.predicate.QueryParserTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_InOp__simple() throws Exception {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".in("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"one,two,3"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
EqualsPredicate ep1=new EqualsPredicate("foo","one");
EqualsPredicate ep2=new EqualsPredicate("foo","two");
EqualsPredicate ep3=new EqualsPredicate("foo","3");
OrPredicate orPredicate=new OrPredicate(ep1,ep2,ep3);
assertEquals(orPredicate,p);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_NotOp() throws Exception {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"a"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.LOGICAL_UNARY_OPERATOR,"!"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"b"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
EqualsPredicate aPred=new EqualsPredicate("a","1");
EqualsPredicate bPred=new EqualsPredicate("b","2");
NotPredicate notPred=new NotPredicate(bPred);
AndPredicate andPred=new AndPredicate(aPred,notPred);
assertEquals(andPred,p);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_NotOp__simple() throws Exception {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.LOGICAL_UNARY_OPERATOR,"!"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"a"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"b"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
assertEquals(new NotPredicate(new EqualsPredicate("a","b")),p);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_isEmptyOp__simple() throws Exception {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".isEmpty("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"category1"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
assertEquals(new CategoryIsEmptyPredicate("category1"),p);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_FilterOp() throws Exception {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR_FUNC,".matches("));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,".*"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
FilterPredicate fp=new FilterPredicate("foo",".*");
assertEquals(fp,p);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse() throws InvalidQueryException {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"foo"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"bar"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"<"));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"a"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"1"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"<="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"b"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"2"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"|"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,">"));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"c"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"3"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,">="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"d"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"100"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"|"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"!="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"e"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"5"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"&"));
listTokens.add(new Token(Token.TYPE.LOGICAL_UNARY_OPERATOR,"!"));
listTokens.add(new Token(Token.TYPE.BRACKET_OPEN,"("));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"f"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"6"));
listTokens.add(new Token(Token.TYPE.LOGICAL_OPERATOR,"|"));
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"g"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"7"));
listTokens.add(new Token(Token.TYPE.BRACKET_CLOSE,")"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
EqualsPredicate fooPred=new EqualsPredicate("foo","bar");
LessPredicate aPred=new LessPredicate("a","1");
LessEqualsPredicate bPred=new LessEqualsPredicate("b","2");
GreaterEqualsPredicate cPred=new GreaterEqualsPredicate("c","3");
GreaterEqualsPredicate dPred=new GreaterEqualsPredicate("d","100");
NotPredicate ePred=new NotPredicate(new EqualsPredicate("e","5"));
EqualsPredicate fPred=new EqualsPredicate("f","6");
EqualsPredicate gPRed=new EqualsPredicate("g","7");
OrPredicate bORcPred=new OrPredicate(bPred,cPred);
AndPredicate aANDbORcPred=new AndPredicate(aPred,bORcPred);
AndPredicate aANDbORcANDdPred=new AndPredicate(aANDbORcPred,dPred);
AndPredicate fooANDaANDbORcANDdPred=new AndPredicate(fooPred,aANDbORcANDdPred);
OrPredicate fORgPred=new OrPredicate(fPred,gPRed);
NotPredicate NOTfORgPred=new NotPredicate(fORgPred);
AndPredicate eANDNOTfORgPred=new AndPredicate(ePred,NOTfORgPred);
OrPredicate rootPredicate=new OrPredicate(fooANDaANDbORcANDdPred,eANDNOTfORgPred);
assertEquals(rootPredicate,p);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_simple() throws Exception {
List listTokens=new ArrayList();
listTokens.add(new Token(Token.TYPE.RELATIONAL_OPERATOR,"="));
listTokens.add(new Token(Token.TYPE.PROPERTY_OPERAND,"a"));
listTokens.add(new Token(Token.TYPE.VALUE_OPERAND,"b"));
QueryParser parser=new QueryParser();
Predicate p=parser.parse(listTokens.toArray(new Token[listTokens.size()]));
assertEquals(new EqualsPredicate("a","b"),p);
}
Class: org.apache.ambari.server.api.query.ExtendedResourcePredicateVisitorTest InternalCallVerifier BooleanVerifier
@Test public void testGetExtendedPredicate() throws Exception {
Resource resource1=new ResourceImpl(Resource.Type.Service);
resource1.setProperty("name","service1");
Resource resource2=new ResourceImpl(Resource.Type.Service);
resource2.setProperty("name","service2");
Map resource1SubProperties1=new HashMap();
resource1SubProperties1.put("sub1/category/p1",1);
resource1SubProperties1.put("sub1/category/p2",2);
resource1SubProperties1.put("sub1/category/p3",3);
Map resource1SubProperties2=new HashMap();
resource1SubProperties2.put("sub1/category/p1",1);
resource1SubProperties2.put("sub1/category/p2",4);
resource1SubProperties2.put("sub1/category/p3",6);
Map resource1SubProperties3=new HashMap();
resource1SubProperties3.put("sub1/category/p1",1);
resource1SubProperties3.put("sub1/category/p2",8);
resource1SubProperties3.put("sub1/category/p3",12);
Set> resource1SubPropertiesSet=new HashSet>();
resource1SubPropertiesSet.add(resource1SubProperties1);
resource1SubPropertiesSet.add(resource1SubProperties2);
resource1SubPropertiesSet.add(resource1SubProperties3);
Map resource2SubProperties1=new HashMap();
resource2SubProperties1.put("sub1/category/p1",2);
resource2SubProperties1.put("sub1/category/p2",2);
resource2SubProperties1.put("sub1/category/p3",3);
Map resource2SubProperties2=new HashMap();
resource2SubProperties2.put("sub1/category/p1",2);
resource2SubProperties2.put("sub1/category/p2",4);
resource2SubProperties2.put("sub1/category/p3",6);
Map resource2SubProperties3=new HashMap();
resource2SubProperties3.put("sub1/category/p1",2);
resource2SubProperties3.put("sub1/category/p2",8);
resource2SubProperties3.put("sub1/category/p3",12);
Set> resource2SubPropertiesSet=new HashSet>();
resource2SubPropertiesSet.add(resource2SubProperties1);
resource2SubPropertiesSet.add(resource2SubProperties2);
resource2SubPropertiesSet.add(resource2SubProperties3);
Map>> extendedPropertyMap=new HashMap>>();
extendedPropertyMap.put(resource1,resource1SubPropertiesSet);
extendedPropertyMap.put(resource2,resource2SubPropertiesSet);
Predicate predicate=new PredicateBuilder().property("sub1/category/p1").equals(1).toPredicate();
ExtendedResourcePredicateVisitor visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
Predicate extendedPredicate=visitor.getExtendedPredicate();
Assert.assertTrue(extendedPredicate.evaluate(resource1));
Assert.assertFalse(extendedPredicate.evaluate(resource2));
predicate=new PredicateBuilder().property("sub1/category/p1").equals(2).toPredicate();
visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
extendedPredicate=visitor.getExtendedPredicate();
Assert.assertFalse(extendedPredicate.evaluate(resource1));
Assert.assertTrue(extendedPredicate.evaluate(resource2));
predicate=new PredicateBuilder().property("sub1/category/p2").equals(4).toPredicate();
visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
extendedPredicate=visitor.getExtendedPredicate();
Assert.assertTrue(extendedPredicate.evaluate(resource1));
Assert.assertTrue(extendedPredicate.evaluate(resource2));
predicate=new PredicateBuilder().property("sub1/category/p2").equals(5).toPredicate();
visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
extendedPredicate=visitor.getExtendedPredicate();
Assert.assertFalse(extendedPredicate.evaluate(resource1));
Assert.assertFalse(extendedPredicate.evaluate(resource2));
predicate=new PredicateBuilder().not().property("sub1/category/p2").equals(5).toPredicate();
visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
extendedPredicate=visitor.getExtendedPredicate();
Assert.assertTrue(extendedPredicate.evaluate(resource1));
Assert.assertTrue(extendedPredicate.evaluate(resource2));
predicate=new PredicateBuilder().property("sub1/category/p1").equals(1).and().property("sub1/category/p2").equals(4).toPredicate();
visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
extendedPredicate=visitor.getExtendedPredicate();
Assert.assertTrue(extendedPredicate.evaluate(resource1));
Assert.assertFalse(extendedPredicate.evaluate(resource2));
predicate=new PredicateBuilder().property("sub1/category/p1").equals(1).or().property("sub1/category/p2").equals(4).toPredicate();
visitor=new ExtendedResourcePredicateVisitor(extendedPropertyMap);
PredicateHelper.visit(predicate,visitor);
extendedPredicate=visitor.getExtendedPredicate();
Assert.assertTrue(extendedPredicate.evaluate(resource1));
Assert.assertTrue(extendedPredicate.evaluate(resource2));
}
Class: org.apache.ambari.server.api.query.ProcessingPredicateVisitorTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceForNotPredicate() throws Exception {
ResourceDefinition resourceDefinition=new HostResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Host,null);
QueryImpl instance=new QueryImplTest.TestQuery(mapIds,resourceDefinition);
Predicate notPredicate1=new PredicateBuilder().not().property("host_components/HostRoles/component_name").equals("ZOOKEEPER_SERVER").toPredicate();
Predicate notPredicate2=new PredicateBuilder().not().property("host_components/HostRoles/component_name").equals("HBASE_MASTER").toPredicate();
Predicate andPredicate=new AndPredicate(notPredicate1,notPredicate2);
ProcessingPredicateVisitor visitor=new ProcessingPredicateVisitor(instance);
PredicateHelper.visit(andPredicate,visitor);
Set categories=visitor.getSubResourceCategories();
Assert.assertEquals(categories.iterator().next(),"host_components");
}
InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceCategories() throws Exception {
ResourceDefinition resourceDefinition=new StackResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Stack,"HDP");
QueryImpl instance=new QueryImplTest.TestQuery(mapIds,resourceDefinition);
Predicate predicate=new PredicateBuilder().property("Stacks/stack_name").equals("HDP").and().property("versions/stackServices/StackServices/service_name").equals("HBASE").and().property("versions/operatingSystems/OperatingSystems/os_type").equals("centos5").toPredicate();
ProcessingPredicateVisitor visitor=new ProcessingPredicateVisitor(instance);
PredicateHelper.visit(predicate,visitor);
Set categories=visitor.getSubResourceCategories();
Set expected=new HashSet();
expected.add("versions");
Assert.assertEquals(expected,categories);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetProcessedPredicate() throws Exception {
ResourceDefinition resourceDefinition=new StackResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Stack,"HDP");
QueryImpl instance=new QueryImplTest.TestQuery(mapIds,resourceDefinition);
Predicate predicate=new PredicateBuilder().property("Stacks/stack_name").equals("HDP").and().property("versions/stackServices/StackServices/service_name").equals("HBASE").and().property("versions/operatingSystems/OperatingSystems/os_type").equals("centos5").toPredicate();
ProcessingPredicateVisitor visitor=new ProcessingPredicateVisitor(instance);
PredicateHelper.visit(predicate,visitor);
Predicate processedPredicate=visitor.getProcessedPredicate();
Predicate expectedPredicate=new PredicateBuilder().property("Stacks/stack_name").equals("HDP").toPredicate();
Assert.assertEquals(expectedPredicate,processedPredicate);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceProperties() throws Exception {
ResourceDefinition resourceDefinition=new StackResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Stack,"HDP");
QueryImpl instance=new QueryImplTest.TestQuery(mapIds,resourceDefinition);
Predicate predicate=new PredicateBuilder().property("Stacks/stack_name").equals("HDP").and().property("versions/stackServices/StackServices/service_name").equals("HBASE").and().property("versions/operatingSystems/OperatingSystems/os_type").equals("centos5").toPredicate();
ProcessingPredicateVisitor visitor=new ProcessingPredicateVisitor(instance);
PredicateHelper.visit(predicate,visitor);
Set properties=visitor.getSubResourceProperties();
Set expected=new HashSet();
expected.add("versions/stackServices/StackServices/service_name");
expected.add("versions/operatingSystems/OperatingSystems/os_type");
Assert.assertEquals(expected,properties);
}
Class: org.apache.ambari.server.api.query.QueryImplTest InternalCallVerifier EqualityVerifier
@Test public void testExecute__Cluster_instance_noSpecifiedProps() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Cluster,"cluster");
expect(resourceDefinition.getType()).andReturn(Resource.Type.Cluster).anyTimes();
Set setChildren=new HashSet();
setChildren.add(new SubResourceDefinition(Resource.Type.Host));
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode clusterNode=tree.getChild("Cluster:1");
Assert.assertEquals("Cluster:1",clusterNode.getName());
Assert.assertEquals(Resource.Type.Cluster,clusterNode.getObject().getType());
Assert.assertEquals(1,clusterNode.getChildren().size());
TreeNode hostNode=clusterNode.getChild("hosts");
Assert.assertEquals(4,hostNode.getChildren().size());
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute__collection_nonNullInternalPredicate_nonNullUserPredicate() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Host).anyTimes();
Set setChildren=new HashSet();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("Hosts/host_name").equals("host:2").toPredicate();
instance.setUserPredicate(predicate);
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertEquals("host:2",hostNode.getObject().getPropertyValue("Hosts/host_name"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute__Stack_instance_noSpecifiedProps() throws Exception {
ResourceDefinition resourceDefinition=new StackResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Stack,"HDP");
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
Result result=instance.execute();
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode stackNode=tree.getChild("Stack:1");
Assert.assertEquals("Stack:1",stackNode.getName());
Assert.assertEquals(Resource.Type.Stack,stackNode.getObject().getType());
Assert.assertEquals(1,stackNode.getChildren().size());
TreeNode versionsNode=stackNode.getChild("versions");
Assert.assertEquals(3,versionsNode.getChildren().size());
}
InternalCallVerifier BooleanVerifier
@Test public void testIsCollection__False(){
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Cluster,"cluster");
mapIds.put(Resource.Type.Service,"service");
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(Collections.emptySet()).anyTimes();
replay(resourceDefinition);
ResourceInstance instance=new TestQuery(mapIds,resourceDefinition);
assertFalse(instance.isCollectionResource());
verify(resourceDefinition);
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute__collection_nullInternalPredicate_nonNullUserPredicate() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Cluster,"cluster");
expect(resourceDefinition.getType()).andReturn(Resource.Type.Host).anyTimes();
Set setChildren=new HashSet();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("Hosts/host_name").equals("host:2").toPredicate();
instance.setUserPredicate(predicate);
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertEquals("host:2",hostNode.getObject().getPropertyValue("Hosts/host_name"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute_subResourcePredicate() throws Exception {
ResourceDefinition resourceDefinition=new StackResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Stack,"HDP");
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("versions/operating_systems/OperatingSystems/os_type").equals("centos5").toPredicate();
instance.setUserPredicate(predicate);
Result result=instance.execute();
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode stackNode=tree.getChild("Stack:1");
Assert.assertEquals("Stack:1",stackNode.getName());
Assert.assertEquals(Resource.Type.Stack,stackNode.getObject().getType());
Assert.assertEquals(1,stackNode.getChildren().size());
TreeNode versionsNode=stackNode.getChild("versions");
Assert.assertEquals(3,versionsNode.getChildren().size());
TreeNode versionNode=versionsNode.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",versionNode.getName());
Assert.assertEquals(Resource.Type.StackVersion,versionNode.getObject().getType());
Assert.assertEquals(1,versionNode.getChildren().size());
TreeNode opSystemsNode=versionNode.getChild("operating_systems");
Assert.assertEquals(1,opSystemsNode.getChildren().size());
TreeNode opSystemNode=opSystemsNode.getChild("OperatingSystem:1");
Assert.assertEquals("OperatingSystem:1",opSystemNode.getName());
Resource osResource=opSystemNode.getObject();
Assert.assertEquals(Resource.Type.OperatingSystem,opSystemNode.getObject().getType());
Assert.assertEquals("centos5",osResource.getPropertyValue("OperatingSystems/os_type"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute__Stack_instance_specifiedSubResources() throws Exception {
ResourceDefinition resourceDefinition=new StackResourceDefinition();
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Stack,"HDP");
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
instance.addProperty("versions/*",null);
instance.addProperty("versions/operating_systems/*",null);
instance.addProperty("versions/operating_systems/repositories/*",null);
Result result=instance.execute();
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode stackNode=tree.getChild("Stack:1");
Assert.assertEquals("Stack:1",stackNode.getName());
Assert.assertEquals(Resource.Type.Stack,stackNode.getObject().getType());
Assert.assertEquals(1,stackNode.getChildren().size());
TreeNode versionsNode=stackNode.getChild("versions");
Assert.assertEquals(3,versionsNode.getChildren().size());
TreeNode versionNode=versionsNode.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",versionNode.getName());
Assert.assertEquals(Resource.Type.StackVersion,versionNode.getObject().getType());
Assert.assertEquals(6,versionNode.getChildren().size());
TreeNode opSystemsNode=versionNode.getChild("operating_systems");
Assert.assertEquals(3,opSystemsNode.getChildren().size());
TreeNode opSystemNode=opSystemsNode.getChild("OperatingSystem:1");
Assert.assertEquals("OperatingSystem:1",opSystemNode.getName());
Assert.assertEquals(Resource.Type.OperatingSystem,opSystemNode.getObject().getType());
Assert.assertEquals(1,opSystemNode.getChildren().size());
TreeNode repositoriesNode=opSystemNode.getChild("repositories");
Assert.assertEquals(2,repositoriesNode.getChildren().size());
TreeNode repositoryNode=repositoriesNode.getChild("Repository:1");
Assert.assertEquals("Repository:1",repositoryNode.getName());
Resource repositoryResource=repositoryNode.getObject();
Assert.assertEquals(Resource.Type.Repository,repositoryResource.getType());
Assert.assertEquals("repo1",repositoryResource.getPropertyValue("Repositories/repo_id"));
Assert.assertEquals("centos5",repositoryResource.getPropertyValue("Repositories/os_type"));
Assert.assertEquals("1.2.1",repositoryResource.getPropertyValue("Repositories/stack_version"));
Assert.assertEquals("HDP",repositoryResource.getPropertyValue("Repositories/stack_name"));
TreeNode artifactsNode=versionNode.getChild("artifacts");
Assert.assertEquals(1,artifactsNode.getChildren().size());
TreeNode artifactNode=artifactsNode.getChild("StackArtifact:1");
Assert.assertEquals("StackArtifact:1",artifactNode.getName());
Assert.assertEquals(Resource.Type.StackArtifact,artifactNode.getObject().getType());
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute__collection_nullInternalPredicate_nullUserPredicate() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Cluster).anyTimes();
Set setChildren=new HashSet();
setChildren.add(new SubResourceDefinition(Resource.Type.Host));
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode clusterNode=tree.getChild("Cluster:1");
Assert.assertEquals("Cluster:1",clusterNode.getName());
Assert.assertEquals(Resource.Type.Cluster,clusterNode.getObject().getType());
Assert.assertEquals(0,clusterNode.getChildren().size());
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute__Host_collection_noSpecifiedProps() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Host).anyTimes();
Set setChildren=new HashSet();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(4,tree.getChildren().size());
TreeNode hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
hostNode=tree.getChild("Host:2");
Assert.assertEquals("Host:2",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
hostNode=tree.getChild("Host:3");
Assert.assertEquals("Host:3",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
hostNode=tree.getChild("Host:4");
Assert.assertEquals("Host:4",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
}
InternalCallVerifier BooleanVerifier
@Test public void testIsCollection__True(){
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
mapIds.put(Resource.Type.Cluster,"cluster");
mapIds.put(Resource.Type.Service,null);
expect(resourceDefinition.getType()).andReturn(Resource.Type.Service).anyTimes();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(Collections.emptySet()).anyTimes();
replay(resourceDefinition);
ResourceInstance instance=new TestQuery(mapIds,resourceDefinition);
assertTrue(instance.isCollectionResource());
verify(resourceDefinition);
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute_collection_NoSuchResourceException() throws Exception {
ResourceDefinition resourceDefinition=new ClusterResourceDefinition();
ClusterController clusterController=createNiceMock(ClusterController.class);
QueryResponse queryResponse=createNiceMock(QueryResponse.class);
Schema schema=createNiceMock(Schema.class);
Renderer renderer=createNiceMock(Renderer.class);
Iterable iterable=createNiceMock(Iterable.class);
Iterator iterator=createNiceMock(Iterator.class);
expect(clusterController.getSchema(Resource.Type.Cluster)).andReturn(schema).anyTimes();
expect(clusterController.getResources(eq(Resource.Type.Cluster),anyObject(org.apache.ambari.server.controller.spi.Request.class),anyObject(Predicate.class))).andReturn(queryResponse);
expect(clusterController.getIterable(eq(Resource.Type.Cluster),anyObject(QueryResponse.class),anyObject(org.apache.ambari.server.controller.spi.Request.class),anyObject(Predicate.class),anyObject(PageRequest.class),anyObject(SortRequest.class))).andReturn(iterable).anyTimes();
expect(iterable.iterator()).andReturn(iterator).anyTimes();
expect(iterator.hasNext()).andReturn(false).anyTimes();
expect(queryResponse.getResources()).andReturn(Collections.emptySet()).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("Clusters/cluster_name").anyTimes();
TreeNode> treeNode=new TreeNodeImpl>(null,Collections.emptySet(),null);
expect(renderer.finalizeProperties(anyObject(TreeNode.class),anyBoolean())).andReturn(treeNode).anyTimes();
Capture resultCapture=new Capture();
expect(renderer.finalizeResult(capture(resultCapture))).andReturn(null);
replay(clusterController,queryResponse,schema,renderer,iterable,iterator);
QueryImpl query=new TestQuery(new HashMap(),resourceDefinition,clusterController);
query.setRenderer(renderer);
query.execute();
TreeNode tree=resultCapture.getValue().getResultTree();
Assert.assertEquals(0,tree.getChildren().size());
verify(clusterController,queryResponse,schema,renderer,iterable,iterator);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddProperty__allCategoryProperties() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Host).anyTimes();
Set setChildren=new HashSet();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
instance.addLocalProperty("c1");
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(4,tree.getChildren().size());
TreeNode hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p2"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p3"));
hostNode=tree.getChild("Host:2");
Assert.assertEquals("Host:2",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p2"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p3"));
hostNode=tree.getChild("Host:3");
Assert.assertEquals("Host:3",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p2"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p3"));
hostNode=tree.getChild("Host:4");
Assert.assertEquals("Host:4",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p2"));
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p3"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute_StackVersionPageSubResourcePredicate() throws NoSuchParentResourceException, UnsupportedPropertyException, NoSuchResourceException, SystemException {
ResourceDefinition resourceDefinition=new StackVersionResourceDefinition();
Map mapIds=new HashMap();
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
instance.addProperty("operating_systems/*",null);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("operating_systems/OperatingSystems/os_type").equals("centos5").toPredicate();
instance.setUserPredicate(predicate);
instance.setPageRequest(new PageRequestImpl(PageRequest.StartingPoint.Beginning,1,0,null,null));
Result result=instance.execute();
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode stackVersionNode=tree.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",stackVersionNode.getName());
Assert.assertEquals(Resource.Type.StackVersion,stackVersionNode.getObject().getType());
Assert.assertEquals("1.2.1",stackVersionNode.getObject().getPropertyValue("Versions/stack_version"));
QueryImpl instance2=new TestQuery(mapIds,resourceDefinition);
instance2.addProperty("operating_systems/*",null);
instance2.setUserPredicate(predicate);
instance2.setPageRequest(new PageRequestImpl(PageRequest.StartingPoint.OffsetStart,1,1,null,null));
Result result2=instance2.execute();
TreeNode tree2=result2.getResultTree();
Assert.assertEquals(1,tree2.getChildren().size());
TreeNode stackVersionNode2=tree2.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",stackVersionNode2.getName());
Assert.assertEquals(Resource.Type.StackVersion,stackVersionNode2.getObject().getType());
Assert.assertEquals("1.2.2",stackVersionNode2.getObject().getPropertyValue("Versions/stack_version"));
QueryImpl instance3=new TestQuery(mapIds,resourceDefinition);
instance3.addProperty("operating_systems/*",null);
instance3.setUserPredicate(predicate);
instance3.setPageRequest(new PageRequestImpl(PageRequest.StartingPoint.OffsetStart,2,1,null,null));
Result result3=instance3.execute();
TreeNode tree3=result3.getResultTree();
Assert.assertEquals(2,tree3.getChildren().size());
TreeNode stackVersionNode3=tree3.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",stackVersionNode3.getName());
Assert.assertEquals(Resource.Type.StackVersion,stackVersionNode3.getObject().getType());
Assert.assertEquals("1.2.2",stackVersionNode3.getObject().getPropertyValue("Versions/stack_version"));
stackVersionNode3=tree3.getChild("StackVersion:2");
Assert.assertEquals("StackVersion:2",stackVersionNode3.getName());
Assert.assertEquals(Resource.Type.StackVersion,stackVersionNode3.getObject().getType());
Assert.assertEquals("2.0.1",stackVersionNode3.getObject().getPropertyValue("Versions/stack_version"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testExecute__Host_collection_AlertsSummary() throws Exception {
ResourceDefinition resourceDefinition=new HostResourceDefinition();
Map mapIds=new HashMap();
final AtomicInteger pageCallCount=new AtomicInteger(0);
ClusterControllerImpl clusterControllerImpl=new ClusterControllerImpl(new ClusterControllerImplTest.TestProviderModule()){
public PageResponse getPage( Resource.Type type, QueryResponse queryResponse, Request request, Predicate predicate, PageRequest pageRequest, SortRequest sortRequest) throws UnsupportedPropertyException, SystemException, NoSuchResourceException, NoSuchParentResourceException {
pageCallCount.incrementAndGet();
return super.getPage(type,queryResponse,request,predicate,pageRequest,sortRequest);
}
}
;
QueryImpl instance=new TestQuery(mapIds,resourceDefinition,clusterControllerImpl);
pageCallCount.set(0);
Result result=instance.execute();
TreeNode tree=result.getResultTree();
Assert.assertEquals(4,tree.getChildren().size());
Assert.assertEquals(1,pageCallCount.get());
pageCallCount.set(0);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("alerts_summary/CRITICAL").greaterThan(0).toPredicate();
instance.setUserPredicate(predicate);
result=instance.execute();
tree=result.getResultTree();
Assert.assertEquals(2,tree.getChildren().size());
Assert.assertEquals(2,pageCallCount.get());
TreeNode hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals("host:0",hostNode.getObject().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertEquals("1",hostNode.getObject().getPropertyValue(PropertyHelper.getPropertyId("alerts_summary","CRITICAL")));
hostNode=tree.getChild("Host:2");
Assert.assertEquals("Host:2",hostNode.getName());
Assert.assertEquals("host:2",hostNode.getObject().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertEquals("1",hostNode.getObject().getPropertyValue(PropertyHelper.getPropertyId("alerts_summary","CRITICAL")));
pageCallCount.set(0);
pb=new PredicateBuilder();
predicate=pb.property("alerts_summary/WARNING").greaterThan(0).toPredicate();
instance.setUserPredicate(predicate);
instance.setPageRequest(new PageRequestImpl(PageRequest.StartingPoint.Beginning,1,0,null,null));
result=instance.execute();
tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
Assert.assertEquals(2,pageCallCount.get());
hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals("host:1",hostNode.getObject().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertEquals("1",hostNode.getObject().getPropertyValue(PropertyHelper.getPropertyId("alerts_summary","WARNING")));
pageCallCount.set(0);
pb=new PredicateBuilder();
predicate=pb.property("alerts_summary/WARNING").greaterThan(0).or().property("host_components/HostRoles/component_name").equals("DATANODE").toPredicate();
instance.setUserPredicate(predicate);
instance.setPageRequest(null);
result=instance.execute();
tree=result.getResultTree();
Assert.assertEquals(0,tree.getChildren().size());
Assert.assertEquals(6,pageCallCount.get());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddProperty__localProperty() throws Exception {
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Map mapIds=new HashMap();
expect(resourceDefinition.getType()).andReturn(Resource.Type.Host).anyTimes();
Set setChildren=new HashSet();
expect(resourceDefinition.getSubResourceDefinitions()).andReturn(setChildren).anyTimes();
replay(resourceDefinition);
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
instance.addLocalProperty("c1/p1");
Result result=instance.execute();
verify(resourceDefinition);
TreeNode tree=result.getResultTree();
Assert.assertEquals(4,tree.getChildren().size());
TreeNode hostNode=tree.getChild("Host:1");
Assert.assertEquals("Host:1",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
hostNode=tree.getChild("Host:2");
Assert.assertEquals("Host:2",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
hostNode=tree.getChild("Host:3");
Assert.assertEquals("Host:3",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
hostNode=tree.getChild("Host:4");
Assert.assertEquals("Host:4",hostNode.getName());
Assert.assertEquals(Resource.Type.Host,hostNode.getObject().getType());
Assert.assertNotNull(hostNode.getObject().getPropertyValue("c1/p1"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExecute_StackVersionPageResourcePredicate() throws NoSuchParentResourceException, UnsupportedPropertyException, NoSuchResourceException, SystemException {
ResourceDefinition resourceDefinition=new StackVersionResourceDefinition();
Map mapIds=new HashMap();
QueryImpl instance=new TestQuery(mapIds,resourceDefinition);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("Versions/stack_version").equals("1.2.1").or().property("Versions/stack_version").equals("1.2.2").toPredicate();
instance.setUserPredicate(predicate);
instance.setPageRequest(new PageRequestImpl(PageRequest.StartingPoint.Beginning,1,0,null,null));
Result result=instance.execute();
TreeNode tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
TreeNode stackVersionNode=tree.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",stackVersionNode.getName());
Assert.assertEquals(Resource.Type.StackVersion,stackVersionNode.getObject().getType());
Assert.assertEquals("1.2.1",stackVersionNode.getObject().getPropertyValue("Versions/stack_version"));
instance.setPageRequest(new PageRequestImpl(PageRequest.StartingPoint.OffsetStart,1,1,null,null));
result=instance.execute();
tree=result.getResultTree();
Assert.assertEquals(1,tree.getChildren().size());
stackVersionNode=tree.getChild("StackVersion:1");
Assert.assertEquals("StackVersion:1",stackVersionNode.getName());
Assert.assertEquals(Resource.Type.StackVersion,stackVersionNode.getObject().getType());
Assert.assertEquals("1.2.2",stackVersionNode.getObject().getPropertyValue("Versions/stack_version"));
}
Class: org.apache.ambari.server.api.query.SubResourcePredicateVisitorTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourcePredicate() throws Exception {
Predicate predicate=new PredicateBuilder().property("ServiceInfo/service_name").equals("HBASE").and().property("components/ServiceComponentInfo/category").equals("SLAVE").and().property("components/host_components/metrics/cpu/cpu_num").greaterThanEqualTo(1).toPredicate();
SubResourcePredicateVisitor visitor=new SubResourcePredicateVisitor("components");
PredicateHelper.visit(predicate,visitor);
Predicate subResourcePredicate=visitor.getSubResourcePredicate();
Predicate expectedPredicate=new PredicateBuilder().property("ServiceComponentInfo/category").equals("SLAVE").and().property("host_components/metrics/cpu/cpu_num").greaterThanEqualTo(1).toPredicate();
Assert.assertEquals(expectedPredicate,subResourcePredicate);
predicate=new PredicateBuilder().property("ServiceInfo/service_name").equals("HBASE").and().property("ServiceInfo/component_name").equals("HBASE_MASTER").toPredicate();
visitor=new SubResourcePredicateVisitor("components");
PredicateHelper.visit(predicate,visitor);
subResourcePredicate=visitor.getSubResourcePredicate();
Assert.assertEquals(new AndPredicate(),subResourcePredicate);
Predicate notPredicate=new PredicateBuilder().not().property("host_components/HostRoles/component_name").equals("ZOOKEEPER_SERVER").toPredicate();
Predicate expectedNotPredicate=new PredicateBuilder().not().property("HostRoles/component_name").equals("ZOOKEEPER_SERVER").toPredicate();
visitor=new SubResourcePredicateVisitor("host_components");
PredicateHelper.visit(notPredicate,visitor);
subResourcePredicate=visitor.getSubResourcePredicate();
Assert.assertEquals(expectedNotPredicate,subResourcePredicate);
}
Class: org.apache.ambari.server.api.query.render.ClusterBlueprintRendererTest APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeResultWithAttributes() throws Exception {
ServiceInfo hdfsService=new ServiceInfo();
hdfsService.setName("HDFS");
ServiceInfo mrService=new ServiceInfo();
mrService.setName("MAPREDUCE");
Result result=new ResultImpl(true);
Map testDesiredConfigMap=new HashMap();
DesiredConfig testDesiredConfig=new DesiredConfig();
testDesiredConfig.setTag("test-tag-one");
testDesiredConfigMap.put("test-type-one",testDesiredConfig);
createClusterResultTree(result.getResultTree(),testDesiredConfigMap);
ClusterBlueprintRenderer renderer=new TestBlueprintRenderer(topology);
Result blueprintResult=renderer.finalizeResult(result);
TreeNode blueprintTree=blueprintResult.getResultTree();
assertNull(blueprintTree.getStringProperty("isCollection"));
assertEquals(1,blueprintTree.getChildren().size());
TreeNode blueprintNode=blueprintTree.getChildren().iterator().next();
assertEquals(0,blueprintNode.getChildren().size());
Resource blueprintResource=blueprintNode.getObject();
Map> properties=blueprintResource.getPropertiesMap();
assertEquals("HDP",properties.get("Blueprints").get("stack_name"));
assertEquals("1.3.3",properties.get("Blueprints").get("stack_version"));
Collection> host_groups=(Collection>)properties.get("").get("host_groups");
assertEquals(2,host_groups.size());
for ( Map hostGroupProperties : host_groups) {
String host_group_name=(String)hostGroupProperties.get("name");
if (host_group_name.equals("host_group_1")) {
assertEquals("1",hostGroupProperties.get("cardinality"));
Collection> components=(Collection>)hostGroupProperties.get("components");
assertEquals(5,components.size());
Set expectedValues=new HashSet(Arrays.asList("JOBTRACKER","TASKTRACKER","NAMENODE","DATANODE","AMBARI_SERVER"));
Set actualValues=new HashSet();
for ( Map componentProperties : components) {
assertEquals(1,componentProperties.size());
actualValues.add(componentProperties.get("name"));
}
assertEquals(expectedValues,actualValues);
}
else if (host_group_name.equals("host_group_2")) {
assertEquals("2",hostGroupProperties.get("cardinality"));
Collection> components=(Collection>)hostGroupProperties.get("components");
assertEquals(2,components.size());
Set expectedValues=new HashSet(Arrays.asList("TASKTRACKER","DATANODE"));
Set actualValues=new HashSet();
for ( Map componentProperties : components) {
assertEquals(1,componentProperties.size());
actualValues.add(componentProperties.get("name"));
}
assertEquals(expectedValues,actualValues);
}
}
List>>> configurationsResult=(List>>>)blueprintResource.getPropertyValue("configurations");
assertEquals("Incorrect number of config maps added",1,configurationsResult.size());
Map> configMap=configurationsResult.iterator().next().get("test-type-one");
assertNotNull("Expected config map was not included",configMap);
assertEquals("Incorrect number of maps added under expected type",2,configMap.size());
assertTrue("Expected properties map was not found",configMap.containsKey("properties"));
assertTrue("Expected properties_attributes map was not found",configMap.containsKey("properties_attributes"));
Map propertiesResult=configMap.get("properties");
assertEquals("Incorrect number of config properties found",1,propertiesResult.size());
Map attributesResult=configMap.get("properties_attributes");
assertEquals("Incorrect number of config attributes found",1,attributesResult.size());
assertEquals("Incorrect property value included","valueOne",propertiesResult.get("propertyOne"));
assertNotNull("Expected attribute not found in exported Blueprint",attributesResult.get("final"));
assertTrue("Attribute type map was not included",attributesResult.get("final") instanceof Map);
Map finalMap=(Map)attributesResult.get("final");
assertEquals("Attribute value is not correct","true",finalMap.get("propertyOne"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeProperties__instance(){
QueryInfo rootQuery=new QueryInfo(new ClusterResourceDefinition(),new HashSet());
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Cluster");
rootQuery.getProperties().add("foo/bar");
rootQuery.getProperties().add("prop1");
QueryInfo hostInfo=new QueryInfo(new HostResourceDefinition(),new HashSet());
queryTree.addChild(hostInfo,"Host");
QueryInfo hostComponentInfo=new QueryInfo(new HostComponentResourceDefinition(),new HashSet());
queryTree.getChild("Host").addChild(hostComponentInfo,"HostComponent");
ClusterBlueprintRenderer renderer=new ClusterBlueprintRenderer();
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
Set rootProperties=propertyTree.getObject();
assertEquals(2,rootProperties.size());
assertNotNull(propertyTree.getChild("Host"));
assertTrue(propertyTree.getChild("Host").getObject().isEmpty());
assertNotNull(propertyTree.getChild("Host/HostComponent"));
assertEquals(1,propertyTree.getChild("Host/HostComponent").getObject().size());
assertTrue(propertyTree.getChild("Host/HostComponent").getObject().contains("HostRoles/component_name"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_noComponentNode(){
QueryInfo rootQuery=new QueryInfo(new ClusterResourceDefinition(),new HashSet());
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Cluster");
rootQuery.getProperties().add("foo/bar");
rootQuery.getProperties().add("prop1");
ClusterBlueprintRenderer renderer=new ClusterBlueprintRenderer();
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
Set rootProperties=propertyTree.getObject();
assertEquals(2,rootProperties.size());
assertNotNull(propertyTree.getChild("Host"));
assertTrue(propertyTree.getChild("Host").getObject().isEmpty());
assertNotNull(propertyTree.getChild("Host/HostComponent"));
assertEquals(1,propertyTree.getChild("Host/HostComponent").getObject().size());
assertTrue(propertyTree.getChild("Host/HostComponent").getObject().contains("HostRoles/component_name"));
}
APIUtilityVerifier BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeResult() throws Exception {
Result result=new ResultImpl(true);
createClusterResultTree(result.getResultTree());
ClusterBlueprintRenderer renderer=new TestBlueprintRenderer(topology);
Result blueprintResult=renderer.finalizeResult(result);
TreeNode blueprintTree=blueprintResult.getResultTree();
assertNull(blueprintTree.getStringProperty("isCollection"));
assertEquals(1,blueprintTree.getChildren().size());
TreeNode blueprintNode=blueprintTree.getChildren().iterator().next();
assertEquals(0,blueprintNode.getChildren().size());
Resource blueprintResource=blueprintNode.getObject();
Map> properties=blueprintResource.getPropertiesMap();
assertEquals("HDP",properties.get("Blueprints").get("stack_name"));
assertEquals("1.3.3",properties.get("Blueprints").get("stack_version"));
Collection> host_groups=(Collection>)properties.get("").get("host_groups");
assertEquals(2,host_groups.size());
for ( Map hostGroupProperties : host_groups) {
String host_group_name=(String)hostGroupProperties.get("name");
if (host_group_name.equals("host_group_1")) {
assertEquals("1",hostGroupProperties.get("cardinality"));
Collection> components=(Collection>)hostGroupProperties.get("components");
assertEquals(5,components.size());
Set expectedValues=new HashSet(Arrays.asList("JOBTRACKER","TASKTRACKER","NAMENODE","DATANODE","AMBARI_SERVER"));
Set actualValues=new HashSet();
for ( Map componentProperties : components) {
assertEquals(1,componentProperties.size());
actualValues.add(componentProperties.get("name"));
}
assertEquals(expectedValues,actualValues);
}
else if (host_group_name.equals("host_group_2")) {
assertEquals("2",hostGroupProperties.get("cardinality"));
Collection> components=(Collection>)hostGroupProperties.get("components");
assertEquals(2,components.size());
Set expectedValues=new HashSet(Arrays.asList("TASKTRACKER","DATANODE"));
Set actualValues=new HashSet();
for ( Map componentProperties : components) {
assertEquals(1,componentProperties.size());
actualValues.add(componentProperties.get("name"));
}
assertEquals(expectedValues,actualValues);
}
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeResult_kerberos() throws Exception {
setupMocksForKerberosEnabledCluster();
Result result=new ResultImpl(true);
createClusterResultTree(result.getResultTree());
ClusterBlueprintRenderer renderer=new TestBlueprintRenderer(topology);
Result blueprintResult=renderer.finalizeResult(result);
TreeNode blueprintTree=blueprintResult.getResultTree();
assertNull(blueprintTree.getStringProperty("isCollection"));
assertEquals(1,blueprintTree.getChildren().size());
TreeNode blueprintNode=blueprintTree.getChildren().iterator().next();
assertEquals(0,blueprintNode.getChildren().size());
Resource blueprintResource=blueprintNode.getObject();
Map> properties=blueprintResource.getPropertiesMap();
assertEquals("HDP",properties.get("Blueprints").get("stack_name"));
assertEquals("1.3.3",properties.get("Blueprints").get("stack_version"));
Map securityProperties=(Map)properties.get("Blueprints").get("security");
assertEquals("KERBEROS",securityProperties.get("type"));
assertNotNull(((Map)securityProperties.get("kerberos_descriptor")).get("properties"));
}
Class: org.apache.ambari.server.api.query.render.DefaultRendererTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_subResource_properties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceComponentInfo/service_name").anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
HashSet componentProperties=new HashSet();
componentProperties.add("goo/car");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),componentProperties),"Component");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(3,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(3,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/service_name"));
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
assertTrue(componentNode.getObject().contains("goo/car"));
verify(schemaFactory,serviceSchema,componentSchema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_subResource_propertiesTopLevelOnly(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceComponentInfo/service_name").anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),new HashSet()),"Component");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(3,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(2,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/service_name"));
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,serviceSchema,componentSchema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_subResource_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceComponentInfo/service_name").anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),new HashSet()),"Component");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(2,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/service_name"));
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,serviceSchema,componentSchema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(schema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Alert)).andReturn(schema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Artifact)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceComponentInfo/service_name").anyTimes();
replay(schemaFactory,schema);
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),new HashSet());
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertTrue(propertyTree.getObject().isEmpty());
assertEquals(3,propertyTree.getChildren().size());
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(2,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/service_name"));
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_properties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(3,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_properties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(3,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_subResource_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceComponentInfo/service_name").anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),new HashSet()),"Component");
DefaultRenderer renderer=new DefaultRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(2,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/service_name"));
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,serviceSchema,componentSchema);
}
Class: org.apache.ambari.server.api.query.render.MetricsPaddingRendererTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__NullPadding_property(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("ServiceInfo/cluster_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
MetricsPaddingRenderer renderer=new MetricsPaddingRenderer("null_padding");
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(4,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("ServiceInfo/cluster_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
assertTrue(propertyTree.getObject().contains("params/padding/NULLS"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
Class: org.apache.ambari.server.api.query.render.MinimalRendererTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(schema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Alert)).andReturn(schema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Artifact)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,schema);
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),new HashSet());
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertTrue(propertyTree.getObject().isEmpty());
assertEquals(3,propertyTree.getChildren().size());
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(1,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(1,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_subResource_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),new HashSet()),"Component");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(1,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(1,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,serviceSchema,componentSchema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_subResource_properties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
HashSet componentProperties=new HashSet();
componentProperties.add("goo/car");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),componentProperties),"Component");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(2,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
assertTrue(componentNode.getObject().contains("goo/car"));
verify(schemaFactory,serviceSchema,componentSchema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_properties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__instance_properties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema schema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(schema).anyTimes();
expect(schema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
replay(schemaFactory,schema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,false);
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
assertEquals(0,propertyTree.getChildren().size());
verify(schemaFactory,schema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeResult_propsSetOnSubResource() throws Exception {
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema clusterSchema=createNiceMock(Schema.class);
Schema hostSchema=createNiceMock(Schema.class);
Schema hostComponentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Cluster)).andReturn(clusterSchema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Host)).andReturn(hostSchema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.HostComponent)).andReturn(hostComponentSchema).anyTimes();
expect(clusterSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("Clusters/cluster_name").anyTimes();
expect(hostSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("Hosts/cluster_name").anyTimes();
expect(hostSchema.getKeyPropertyId(Resource.Type.Host)).andReturn("Hosts/host_name").anyTimes();
expect(hostComponentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("HostRoles/cluster_name").anyTimes();
expect(hostComponentSchema.getKeyPropertyId(Resource.Type.Host)).andReturn("HostRoles/host_name").anyTimes();
expect(hostComponentSchema.getKeyPropertyId(Resource.Type.HostComponent)).andReturn("HostRoles/component_name").anyTimes();
replay(schemaFactory,clusterSchema,hostSchema,hostComponentSchema);
Result result=new ResultImpl(true);
createResultTree(result.getResultTree());
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
renderer.finalizeProperties(createPropertyTreeWithSubProps(),false);
TreeNode resultTree=renderer.finalizeResult(result).getResultTree();
assertNull(resultTree.getStringProperty("isCollection"));
assertEquals(1,resultTree.getChildren().size());
TreeNode clusterNode=resultTree.getChildren().iterator().next();
Resource clusterResource=clusterNode.getObject();
Map> clusterProperties=clusterResource.getPropertiesMap();
assertEquals(2,clusterProperties.size());
assertEquals(3,clusterProperties.get("Clusters").size());
assertEquals("testCluster",clusterProperties.get("Clusters").get("cluster_name"));
assertEquals("HDP-1.3.3",clusterProperties.get("Clusters").get("version"));
assertEquals("value1",clusterProperties.get("Clusters").get("prop1"));
assertEquals(1,clusterProperties.get("").size());
assertEquals("bar",clusterProperties.get("").get("foo"));
TreeNode hosts=clusterNode.getChildren().iterator().next();
for ( TreeNode hostNode : hosts.getChildren()) {
Resource hostResource=hostNode.getObject();
Map> hostProperties=hostResource.getPropertiesMap();
assertEquals(2,hostProperties.size());
assertEquals(1,hostProperties.get("Hosts").size());
assertTrue(hostProperties.get("Hosts").containsKey("host_name"));
assertEquals(1,hostProperties.get("").size());
assertEquals("bar",hostProperties.get("").get("foo"));
for ( TreeNode componentNode : hostNode.getChildren().iterator().next().getChildren()) {
Resource componentResource=componentNode.getObject();
Map> componentProperties=componentResource.getPropertiesMap();
assertEquals(1,componentProperties.size());
assertEquals(1,componentProperties.get("HostRoles").size());
assertTrue(componentProperties.get("HostRoles").containsKey("component_name"));
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeResult() throws Exception {
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema clusterSchema=createNiceMock(Schema.class);
Schema hostSchema=createNiceMock(Schema.class);
Schema hostComponentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Cluster)).andReturn(clusterSchema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Host)).andReturn(hostSchema).anyTimes();
expect(schemaFactory.getSchema(Resource.Type.HostComponent)).andReturn(hostComponentSchema).anyTimes();
expect(clusterSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("Clusters/cluster_name").anyTimes();
expect(hostSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("Hosts/cluster_name").anyTimes();
expect(hostSchema.getKeyPropertyId(Resource.Type.Host)).andReturn("Hosts/host_name").anyTimes();
expect(hostComponentSchema.getKeyPropertyId(Resource.Type.Cluster)).andReturn("HostRoles/cluster_name").anyTimes();
expect(hostComponentSchema.getKeyPropertyId(Resource.Type.Host)).andReturn("HostRoles/host_name").anyTimes();
expect(hostComponentSchema.getKeyPropertyId(Resource.Type.HostComponent)).andReturn("HostRoles/component_name").anyTimes();
replay(schemaFactory,clusterSchema,hostSchema,hostComponentSchema);
Result result=new ResultImpl(true);
createResultTree(result.getResultTree());
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
renderer.finalizeProperties(createPropertyTree(),false);
TreeNode resultTree=renderer.finalizeResult(result).getResultTree();
assertNull(resultTree.getStringProperty("isCollection"));
assertEquals(1,resultTree.getChildren().size());
TreeNode clusterNode=resultTree.getChildren().iterator().next();
Resource clusterResource=clusterNode.getObject();
Map> clusterProperties=clusterResource.getPropertiesMap();
assertEquals(2,clusterProperties.size());
assertEquals(3,clusterProperties.get("Clusters").size());
assertEquals("testCluster",clusterProperties.get("Clusters").get("cluster_name"));
assertEquals("HDP-1.3.3",clusterProperties.get("Clusters").get("version"));
assertEquals("value1",clusterProperties.get("Clusters").get("prop1"));
assertEquals(1,clusterProperties.get("").size());
assertEquals("bar",clusterProperties.get("").get("foo"));
TreeNode hosts=clusterNode.getChildren().iterator().next();
for ( TreeNode hostNode : hosts.getChildren()) {
Resource hostResource=hostNode.getObject();
Map> hostProperties=hostResource.getPropertiesMap();
assertEquals(1,hostProperties.size());
assertEquals(1,hostProperties.get("Hosts").size());
assertTrue(hostProperties.get("Hosts").containsKey("host_name"));
for ( TreeNode componentNode : hostNode.getChildren().iterator().next().getChildren()) {
Resource componentResource=componentNode.getObject();
Map> componentProperties=componentResource.getPropertiesMap();
assertEquals(1,componentProperties.size());
assertEquals(1,componentProperties.get("HostRoles").size());
assertTrue(componentProperties.get("HostRoles").containsKey("component_name"));
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_subResource_propertiesTopLevelOnly(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
serviceProperties.add("foo/bar");
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),new HashSet()),"Component");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(2,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
assertTrue(propertyTree.getObject().contains("foo/bar"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(1,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,serviceSchema,componentSchema);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFinalizeProperties__collection_subResource_noProperties(){
SchemaFactory schemaFactory=createNiceMock(SchemaFactory.class);
Schema serviceSchema=createNiceMock(Schema.class);
Schema componentSchema=createNiceMock(Schema.class);
expect(schemaFactory.getSchema(Resource.Type.Service)).andReturn(serviceSchema).anyTimes();
expect(serviceSchema.getKeyPropertyId(Resource.Type.Service)).andReturn("ServiceInfo/service_name").anyTimes();
expect(schemaFactory.getSchema(Resource.Type.Component)).andReturn(componentSchema).anyTimes();
expect(componentSchema.getKeyPropertyId(Resource.Type.Component)).andReturn("ServiceComponentInfo/component_name").anyTimes();
replay(schemaFactory,serviceSchema,componentSchema);
HashSet serviceProperties=new HashSet();
QueryInfo rootQuery=new QueryInfo(new ServiceResourceDefinition(),serviceProperties);
TreeNode queryTree=new TreeNodeImpl(null,rootQuery,"Service");
queryTree.addChild(new QueryInfo(new ComponentResourceDefinition(),new HashSet()),"Component");
MinimalRenderer renderer=new MinimalRenderer();
renderer.init(schemaFactory);
TreeNode> propertyTree=renderer.finalizeProperties(queryTree,true);
assertEquals(1,propertyTree.getChildren().size());
assertEquals(1,propertyTree.getObject().size());
assertTrue(propertyTree.getObject().contains("ServiceInfo/service_name"));
TreeNode> componentNode=propertyTree.getChild("Component");
assertEquals(0,componentNode.getChildren().size());
assertEquals(1,componentNode.getObject().size());
assertTrue(componentNode.getObject().contains("ServiceComponentInfo/component_name"));
verify(schemaFactory,serviceSchema,componentSchema);
}
Class: org.apache.ambari.server.api.resources.BaseResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetPostProcessors() throws AmbariException {
BaseResourceDefinition resourceDefinition=getResourceDefinition();
List postProcessors=resourceDefinition.getPostProcessors();
Assert.assertEquals(1,postProcessors.size());
ResourceDefinition.PostProcessor processor=postProcessors.iterator().next();
Resource service=new ResourceImpl(Resource.Type.Service);
service.setProperty("ServiceInfo/service_name","Service1");
TreeNode parentNode=new TreeNodeImpl(null,null,"services");
TreeNode serviceNode=new TreeNodeImpl(parentNode,service,"service1");
parentNode.setProperty("isCollection","true");
ResourceProviderFactory factory=createMock(ResourceProviderFactory.class);
MaintenanceStateHelper maintenanceStateHelper=createNiceMock(MaintenanceStateHelper.class);
AmbariManagementController managementController=createMock(AmbariManagementController.class);
expect(maintenanceStateHelper.isOperationAllowed(anyObject(Resource.Type.class),anyObject(Service.class))).andReturn(true).anyTimes();
ResourceProvider serviceResourceProvider=new ServiceResourceProvider(PropertyHelper.getPropertyIds(Resource.Type.Service),PropertyHelper.getKeyPropertyIds(Resource.Type.Service),managementController,maintenanceStateHelper);
expect(factory.getServiceResourceProvider(anyObject(Set.class),anyObject(Map.class),anyObject(AmbariManagementController.class))).andReturn(serviceResourceProvider);
AbstractControllerResourceProvider.init(factory);
replay(factory,managementController,maintenanceStateHelper);
processor.process(null,serviceNode,"http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/services");
String href=serviceNode.getStringProperty("href");
Assert.assertEquals("http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/services/Service1",href);
Resource configGroup=new ResourceImpl(Resource.Type.ConfigGroup);
configGroup.setProperty("ConfigGroup/id","2");
TreeNode resourcesNode=new TreeNodeImpl(null,null,BaseManagementHandler.RESOURCES_NODE_NAME);
TreeNode configGroupNode=new TreeNodeImpl(resourcesNode,configGroup,"configGroup1");
resourcesNode.setProperty("isCollection","true");
processor.process(null,configGroupNode,"http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/config_groups");
href=configGroupNode.getStringProperty("href");
Assert.assertEquals("http://c6401.ambari.apache.org:8080/api/v1/clusters/c1/config_groups/2",href);
}
UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testGetRenderer(){
ResourceDefinition resource=getResourceDefinition();
assertTrue(resource.getRenderer(null) instanceof DefaultRenderer);
assertTrue(resource.getRenderer("default") instanceof DefaultRenderer);
assertTrue(resource.getRenderer("minimal") instanceof MinimalRenderer);
try {
resource.getRenderer("foo");
fail("Should have thrown an exception due to invalid renderer type");
}
catch ( IllegalArgumentException e) {
}
}
Class: org.apache.ambari.server.api.resources.BlueprintResourceDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetCreateDirectives(){
BlueprintResourceDefinition definition=new BlueprintResourceDefinition();
Collection directives=definition.getCreateDirectives();
Assert.assertEquals(1,directives.size());
Assert.assertTrue(directives.contains("validate_topology"));
}
Class: org.apache.ambari.server.api.resources.ClusterResourceDefinitionTest UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testGetRenderer(){
ResourceDefinition resource=new ClusterResourceDefinition();
assertTrue(resource.getRenderer(null) instanceof DefaultRenderer);
assertTrue(resource.getRenderer("default") instanceof DefaultRenderer);
assertTrue(resource.getRenderer("minimal") instanceof MinimalRenderer);
assertTrue(resource.getRenderer("blueprint") instanceof ClusterBlueprintRenderer);
try {
resource.getRenderer("foo");
fail("Should have thrown an exception due to invalid renderer type");
}
catch ( IllegalArgumentException e) {
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions(){
ResourceDefinition resource=new ClusterResourceDefinition();
Set subResources=resource.getSubResourceDefinitions();
assertEquals(12,subResources.size());
assertTrue(includesType(subResources,Resource.Type.Service));
assertTrue(includesType(subResources,Resource.Type.Host));
assertTrue(includesType(subResources,Resource.Type.Configuration));
assertTrue(includesType(subResources,Resource.Type.Request));
assertTrue(includesType(subResources,Resource.Type.Workflow));
assertTrue(includesType(subResources,Resource.Type.ConfigGroup));
assertTrue(includesType(subResources,Resource.Type.AlertDefinition));
assertTrue(includesType(subResources,Resource.Type.ServiceConfigVersion));
assertTrue(includesType(subResources,Resource.Type.ClusterPrivilege));
assertTrue(includesType(subResources,Resource.Type.Alert));
assertTrue(includesType(subResources,Resource.Type.ClusterStackVersion));
assertTrue(includesType(subResources,Resource.Type.Artifact));
}
Class: org.apache.ambari.server.api.resources.ComponentStackVersionResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
final ComponentStackVersionResourceDefinition resourceDefinition=new ComponentStackVersionResourceDefinition(null);
final Set subResourceDefinitions=resourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(1,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.CredentialResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetCreateDirectives(){
CredentialResourceDefinition definition=new CredentialResourceDefinition();
Collection directives=definition.getCreateDirectives();
Assert.assertEquals(0,directives.size());
}
Class: org.apache.ambari.server.api.resources.FeedResourceDefinitionTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
FeedResourceDefinition definition=new FeedResourceDefinition();
Set subResourceDefinitions=definition.getSubResourceDefinitions();
Assert.assertEquals(1,subResourceDefinitions.size());
SubResourceDefinition subResourceDefinition=subResourceDefinitions.iterator().next();
Assert.assertEquals(Resource.Type.DRInstance,subResourceDefinition.getType());
}
Class: org.apache.ambari.server.api.resources.HostKerberosIdentityResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
final HostKerberosIdentityResourceDefinition resourceDefinition=new HostKerberosIdentityResourceDefinition();
final Set subResourceDefinitions=resourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(0,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.HostResourceDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions(){
final ResourceDefinition resource=new HostResourceDefinition();
Set subResources=resource.getSubResourceDefinitions();
assertEquals(4,subResources.size());
assertTrue(includesType(subResources,Resource.Type.HostComponent));
assertTrue(includesType(subResources,Resource.Type.Alert));
assertTrue(includesType(subResources,Resource.Type.HostStackVersion));
assertTrue(includesType(subResources,Resource.Type.HostKerberosIdentity));
}
Class: org.apache.ambari.server.api.resources.InstanceResourceDefinitionTest InternalCallVerifier BooleanVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
InstanceResourceDefinition definition=new InstanceResourceDefinition();
Set subResourceDefinitions=definition.getSubResourceDefinitions();
Assert.assertTrue(subResourceDefinitions.isEmpty());
}
Class: org.apache.ambari.server.api.resources.JobResourceDefinitionTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
JobResourceDefinition definition=new JobResourceDefinition();
Set subResourceDefinitions=definition.getSubResourceDefinitions();
Assert.assertEquals(1,subResourceDefinitions.size());
SubResourceDefinition subResourceDefinition=subResourceDefinitions.iterator().next();
Assert.assertEquals(Resource.Type.TaskAttempt,subResourceDefinition.getType());
}
Class: org.apache.ambari.server.api.resources.LdapSyncEventResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
LdapSyncEventResourceDefinition resourceDefinition=new LdapSyncEventResourceDefinition();
Set subResourceDefinitions=resourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(0,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.PermissionResourceDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
PermissionResourceDefinition permissionResourceDefinition=new PermissionResourceDefinition();
Set subResourceDefinitions=permissionResourceDefinition.getSubResourceDefinitions();
Set expectedSubTypes=new HashSet();
expectedSubTypes.add(Resource.Type.RoleAuthorization);
Assert.assertEquals(1,subResourceDefinitions.size());
for ( SubResourceDefinition subResourceDefinition : subResourceDefinitions) {
Assert.assertTrue(expectedSubTypes.contains(subResourceDefinition.getType()));
}
}
Class: org.apache.ambari.server.api.resources.PrivilegeResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
PrivilegeResourceDefinition privilegeResourceDefinition=new PrivilegeResourceDefinition(Resource.Type.AmbariPrivilege);
Set subResourceDefinitions=privilegeResourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(0,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.RepositoryResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
final RepositoryResourceDefinition resourceDefinition=new RepositoryResourceDefinition();
final Set subResourceDefinitions=resourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(0,subResourceDefinitions.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetCreateDirectives() throws Exception {
final RepositoryResourceDefinition resourceDefinition=new RepositoryResourceDefinition();
final Collection createDirectives=resourceDefinition.getCreateDirectives();
Assert.assertEquals(1,createDirectives.size());
Assert.assertEquals(RepositoryResourceDefinition.VALIDATE_ONLY_DIRECTIVE,createDirectives.iterator().next());
}
Class: org.apache.ambari.server.api.resources.RepositoryVersionResourceDefinitionTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
final RepositoryVersionResourceDefinition resourceDefinition=new RepositoryVersionResourceDefinition();
final Set subResourceDefinitions=resourceDefinition.getSubResourceDefinitions();
final Iterator iterator=subResourceDefinitions.iterator();
Assert.assertEquals(Resource.Type.OperatingSystem,iterator.next().getType());
Assert.assertEquals(1,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.ResourceInstanceFactoryImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetStackArtifactDefinition(){
ResourceDefinition resourceDefinition=ResourceInstanceFactoryImpl.getResourceDefinition(Resource.Type.StackArtifact,null);
assertEquals("artifact",resourceDefinition.getSingularName());
assertEquals("artifacts",resourceDefinition.getPluralName());
assertEquals(Resource.Type.StackArtifact,resourceDefinition.getType());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetHostKerberosIdentityDefinition(){
ResourceDefinition resourceDefinition=ResourceInstanceFactoryImpl.getResourceDefinition(Resource.Type.HostKerberosIdentity,null);
assertNotNull(resourceDefinition);
assertEquals("kerberos_identity",resourceDefinition.getSingularName());
assertEquals("kerberos_identities",resourceDefinition.getPluralName());
assertEquals(Resource.Type.HostKerberosIdentity,resourceDefinition.getType());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetUserAuthorizationDefinition(){
ResourceDefinition resourceDefinition=ResourceInstanceFactoryImpl.getResourceDefinition(Resource.Type.UserAuthorization,null);
assertNotNull(resourceDefinition);
assertEquals("authorization",resourceDefinition.getSingularName());
assertEquals("authorizations",resourceDefinition.getPluralName());
assertEquals(Resource.Type.UserAuthorization,resourceDefinition.getType());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRoleAuthorizationDefinition(){
ResourceDefinition resourceDefinition=ResourceInstanceFactoryImpl.getResourceDefinition(Resource.Type.RoleAuthorization,null);
assertNotNull(resourceDefinition);
assertEquals("authorization",resourceDefinition.getSingularName());
assertEquals("authorizations",resourceDefinition.getPluralName());
assertEquals(Resource.Type.RoleAuthorization,resourceDefinition.getType());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetArtifactDefinition(){
ResourceDefinition resourceDefinition=ResourceInstanceFactoryImpl.getResourceDefinition(Resource.Type.Artifact,null);
assertEquals("artifact",resourceDefinition.getSingularName());
assertEquals("artifacts",resourceDefinition.getPluralName());
assertEquals(Resource.Type.Artifact,resourceDefinition.getType());
}
Class: org.apache.ambari.server.api.resources.ServiceResourceDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions(){
ResourceDefinition resource=new ServiceResourceDefinition();
Set subResources=resource.getSubResourceDefinitions();
assertEquals(3,subResources.size());
assertTrue(includesType(subResources,Resource.Type.Component));
assertTrue(includesType(subResources,Resource.Type.Alert));
assertTrue(includesType(subResources,Resource.Type.Artifact));
}
Class: org.apache.ambari.server.api.resources.StackConfigurationDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions(){
ResourceDefinition resource=new StackConfigurationResourceDefinition();
Set subResources=resource.getSubResourceDefinitions();
assertEquals(1,subResources.size());
assertTrue(includesType(subResources,Resource.Type.StackConfigurationDependency));
}
Class: org.apache.ambari.server.api.resources.StackConfigurationDependencyDefinitionTest InternalCallVerifier BooleanVerifier
@Test public void testGetSubResourceDefinitions(){
ResourceDefinition resource=new StackConfigurationDependencyResourceDefinition();
Set subResources=resource.getSubResourceDefinitions();
assertTrue(subResources.isEmpty());
}
Class: org.apache.ambari.server.api.resources.StackServiceResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testDefinitionNames(){
ResourceDefinition def=new StackServiceResourceDefinition();
assertEquals("service",def.getSingularName());
assertEquals("services",def.getPluralName());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions(){
ResourceDefinition def=new StackServiceResourceDefinition();
Set subResources=def.getSubResourceDefinitions();
assertEquals(5,subResources.size());
boolean configReturned=false;
boolean componentReturned=false;
boolean artifactReturned=false;
boolean themesReturned=false;
for ( SubResourceDefinition subResource : subResources) {
Resource.Type type=subResource.getType();
if (type.equals(Resource.Type.StackConfiguration)) {
configReturned=true;
}
else if (type.equals(Resource.Type.StackServiceComponent)) {
componentReturned=true;
}
else if (type.equals(Resource.Type.StackArtifact)) {
artifactReturned=true;
}
else if (type.equals(Resource.Type.Theme)) {
themesReturned=true;
}
}
assertTrue(configReturned);
assertTrue(componentReturned);
assertTrue(artifactReturned);
assertTrue(themesReturned);
}
Class: org.apache.ambari.server.api.resources.StackVersionResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testDefinitionNames(){
ResourceDefinition def=new StackVersionResourceDefinition();
assertEquals("version",def.getSingularName());
assertEquals("versions",def.getPluralName());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions(){
ResourceDefinition def=new StackVersionResourceDefinition();
Set subResources=def.getSubResourceDefinitions();
assertEquals(6,subResources.size());
boolean operatingSystemFound=false;
boolean serviceFound=false;
boolean configFound=false;
boolean repoFound=false;
boolean artifactReturned=false;
boolean compatibleFound=false;
for ( SubResourceDefinition subResource : subResources) {
Resource.Type type=subResource.getType();
if (type.equals(Resource.Type.OperatingSystem)) {
operatingSystemFound=true;
}
else if (type.equals(Resource.Type.StackService)) {
serviceFound=true;
}
else if (type.equals(Resource.Type.StackLevelConfiguration)) {
configFound=true;
}
else if (type.equals(Resource.Type.RepositoryVersion)) {
repoFound=true;
}
else if (type.equals(Resource.Type.StackArtifact)) {
artifactReturned=true;
}
else if (type.equals(Resource.Type.CompatibleRepositoryVersion)) {
compatibleFound=true;
}
}
assertTrue(operatingSystemFound);
assertTrue(serviceFound);
assertTrue(configFound);
assertTrue(repoFound);
assertTrue(artifactReturned);
assertTrue(compatibleFound);
}
Class: org.apache.ambari.server.api.resources.TargetClusterResourceDefinitionTest InternalCallVerifier BooleanVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
TargetClusterResourceDefinition definition=new TargetClusterResourceDefinition();
Set subResourceDefinitions=definition.getSubResourceDefinitions();
Assert.assertTrue(subResourceDefinitions.isEmpty());
}
Class: org.apache.ambari.server.api.resources.TaskAttemptResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
TaskAttemptResourceDefinition definition=new TaskAttemptResourceDefinition();
Set subResourceDefinitions=definition.getSubResourceDefinitions();
Assert.assertEquals(0,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.UserResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
final UserResourceDefinition userResourceDefinition=new UserResourceDefinition();
Set subResourceDefinitions=userResourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(2,subResourceDefinitions.size());
}
Class: org.apache.ambari.server.api.resources.ViewInstanceResourceDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
ViewInstanceResourceDefinition viewInstanceResourceDefinition=getViewInstanceResourceDefinition();
Set subResourceDefinitions=viewInstanceResourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(3,subResourceDefinitions.size());
for ( SubResourceDefinition subResourceDefinition : subResourceDefinitions) {
Resource.Type type=subResourceDefinition.getType();
Assert.assertTrue(type.name().equals("sub1") || type.name().equals("sub2") || type.equals(Resource.Type.ViewPrivilege));
}
}
Class: org.apache.ambari.server.api.resources.ViewPermissionResourceDefinitionTest InternalCallVerifier BooleanVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
ViewPermissionResourceDefinition ViewPermissionResourceDefinition=new ViewPermissionResourceDefinition();
Set subResourceDefinitions=ViewPermissionResourceDefinition.getSubResourceDefinitions();
Assert.assertTrue(subResourceDefinitions.isEmpty());
}
Class: org.apache.ambari.server.api.resources.ViewResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
ViewResourceDefinition viewResourceDefinition=new ViewResourceDefinition();
Set subResourceDefinitions=viewResourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(1,subResourceDefinitions.size());
Assert.assertEquals("ViewVersion",subResourceDefinitions.iterator().next().getType().name());
}
Class: org.apache.ambari.server.api.resources.ViewVersionResourceDefinitionTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
ViewVersionResourceDefinition viewVersionResourceDefinition=new ViewVersionResourceDefinition();
Set subResourceDefinitions=viewVersionResourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(2,subResourceDefinitions.size());
for ( SubResourceDefinition subResourceDefinition : subResourceDefinitions) {
String name=subResourceDefinition.getType().name();
Assert.assertTrue(name.equals("ViewInstance") || name.equals("ViewPermission"));
}
}
Class: org.apache.ambari.server.api.resources.WorkflowResourceDefinitionTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
WorkflowResourceDefinition definition=new WorkflowResourceDefinition();
Set subResourceDefinitions=definition.getSubResourceDefinitions();
Assert.assertEquals(1,subResourceDefinitions.size());
SubResourceDefinition subResourceDefinition=subResourceDefinitions.iterator().next();
Assert.assertEquals(Resource.Type.Job,subResourceDefinition.getType());
}
Class: org.apache.ambari.server.api.rest.KdcServerConnectionVerificationTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateUDP__Successful() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andReturn(null).once();
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,UDP);
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertTrue(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateUDP__Fail_TimeoutErrorCode() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(new KerberosException(ErrorType.KRB_ERR_GENERIC,"TimeOut occurred"));
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,UDP);
assertFalse(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertTrue(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateTCP__Fail_UnknownException() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(new RuntimeException("This is a really bad exception"));
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,TCP);
assertFalse(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertFalse(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateTCP__Fail_GeneralErrorCode_NotTimeout() throws Exception {
KrbError error=createNiceMock(KrbError.class);
expect(error.getErrorCode()).andReturn(ErrorType.KRB_ERR_GENERIC).once();
expect(error.getMessageType()).andReturn(KerberosMessageType.KRB_ERROR).once();
KerberosException exception=createNiceMock(KerberosException.class);
expect(exception.getError()).andReturn(error).once();
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(exception);
replay(connection,exception,error);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,TCP);
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertFalse(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection,exception);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidate__Success() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andReturn(null).once();
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host:11111");
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateTCP__Successful2() throws Exception {
KrbError error=createNiceMock(KrbError.class);
expect(error.getErrorCode()).andReturn(ErrorType.KDC_ERR_C_PRINCIPAL_UNKNOWN).once();
expect(error.getMessageType()).andReturn(KerberosMessageType.KRB_ERROR).once();
KerberosException exception=createNiceMock(KerberosException.class);
expect(exception.getError()).andReturn(error).once();
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(exception);
replay(connection,exception,error);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,TCP);
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertFalse(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection,exception);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateTCP__Successful() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andReturn(null).once();
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,TCP);
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertFalse(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateTCP__Fail_TimeoutErrorCode() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(new KerberosException(ErrorType.KRB_ERR_GENERIC,"TimeOut occurred"));
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,TCP);
assertFalse(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertFalse(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateUDP__Successful2() throws Exception {
KrbError error=createNiceMock(KrbError.class);
expect(error.getErrorCode()).andReturn(ErrorType.KDC_ERR_C_PRINCIPAL_UNKNOWN).once();
expect(error.getMessageType()).andReturn(KerberosMessageType.KRB_ERROR).once();
KerberosException exception=createNiceMock(KerberosException.class);
expect(exception.getError()).andReturn(error).once();
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(exception);
replay(connection,exception,error);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,UDP);
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertTrue(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection,exception);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateTCP__Fail_Timeout() throws Exception {
int timeout=1;
KdcConnection connection=new BlockingKdcConnection(null);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
kdcConnVerifier.setConnectionTimeout(timeout);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,TCP);
assertFalse(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertFalse(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(timeout * 1000,kdcConfig.getTimeout());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateUDP__Fail_GeneralErrorCode_NotTimeout() throws Exception {
KrbError error=createNiceMock(KrbError.class);
expect(error.getErrorCode()).andReturn(ErrorType.KRB_ERR_GENERIC).once();
expect(error.getMessageType()).andReturn(KerberosMessageType.KRB_ERROR).once();
KerberosException exception=createNiceMock(KerberosException.class);
expect(exception.getError()).andReturn(error).once();
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(exception);
replay(connection,exception,error);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,UDP);
assertTrue(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertTrue(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection,exception);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateUDP__Fail_UnknownException() throws Exception {
KdcConnection connection=createStrictMock(KdcConnection.class);
expect(connection.getTgt("noUser@noRealm","noPassword")).andThrow(new RuntimeException("This is a really bad exception"));
replay(connection);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,UDP);
assertFalse(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertTrue(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(10 * 1000,kdcConfig.getTimeout());
verify(connection);
}
InternalCallVerifier BooleanVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testValidate__Live() throws Exception {
KdcServerConnectionVerification kdcConnVerifier=new KdcServerConnectionVerification(configuration);
boolean result=kdcConnVerifier.isKdcReachable("c6501:88");
assertTrue(result);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testValidateUDP__Fail_Timeout() throws Exception {
int timeout=1;
KdcConnection connection=new BlockingKdcConnection(null);
TestKdcServerConnectionVerification kdcConnVerifier=new TestKdcServerConnectionVerification(configuration,connection);
kdcConnVerifier.setConnectionTimeout(timeout);
boolean result=kdcConnVerifier.isKdcReachable("test-host",11111,UDP);
assertFalse(result);
KdcConfig kdcConfig=kdcConnVerifier.getConfigUsedInConnectionCreation();
assertTrue(kdcConfig.isUseUdp());
assertEquals("test-host",kdcConfig.getHostName());
assertEquals(11111,kdcConfig.getKdcPort());
assertEquals(timeout * 1000,kdcConfig.getTimeout());
}
Class: org.apache.ambari.server.api.services.AmbariMetaInfoTest APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRepositoryUpdatedBaseUrl() throws Exception {
String buildDir=tmpFolder.getRoot().getAbsolutePath();
TestAmbariMetaInfo ambariMetaInfo=setupTempAmbariMetaInfo(buildDir);
String newBaseUrl="http://myprivate-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0";
ambariMetaInfo.updateRepoBaseURL(STACK_NAME_HDP,"2.1.1","redhat6",HDP_REPO_ID,newBaseUrl);
RepositoryInfo repoInfo=ambariMetaInfo.getRepository(STACK_NAME_HDP,"2.1.1","redhat6",HDP_REPO_ID);
assertEquals(newBaseUrl,repoInfo.getBaseUrl());
String prevBaseUrl=repoInfo.getDefaultBaseUrl();
MetainfoDAO metainfoDAO=ambariMetaInfo.metaInfoDAO;
reset(metainfoDAO);
MetainfoEntity entity=createNiceMock(MetainfoEntity.class);
expect(metainfoDAO.findByKey("repo:/HDP/2.1.1/redhat6/HDP-2.1.1:baseurl")).andReturn(entity).atLeastOnce();
expect(entity.getMetainfoValue()).andReturn(newBaseUrl).atLeastOnce();
replay(metainfoDAO,entity);
ambariMetaInfo.init();
waitForAllReposToBeResolved(ambariMetaInfo);
List redhat6Repo=ambariMetaInfo.getRepositories(STACK_NAME_HDP,"2.1.1","redhat6");
assertNotNull(redhat6Repo);
for ( RepositoryInfo ri : redhat6Repo) {
if (HDP_REPO_NAME.equals(ri.getRepoName())) {
assertEquals(newBaseUrl,ri.getBaseUrl());
assertFalse(ri.getBaseUrl().equals(ri.getDefaultBaseUrl()));
}
}
Capture c=new Capture();
metainfoDAO=ambariMetaInfo.metaInfoDAO;
reset(metainfoDAO);
reset(entity);
expect(metainfoDAO.findByKey("repo:/HDP/2.1.1/redhat6/HDP-2.1.1:baseurl")).andReturn(entity).atLeastOnce();
expect(metainfoDAO.merge(EasyMock.capture(c))).andReturn(entity).atLeastOnce();
replay(metainfoDAO,entity);
ambariMetaInfo.updateRepoBaseURL(STACK_NAME_HDP,"2.1.1","redhat6",HDP_REPO_ID,prevBaseUrl);
assertEquals(prevBaseUrl,c.getValue().getMetainfoValue());
assertTrue(repoInfo.isBaseUrlFromSaved());
}
InternalCallVerifier EqualityVerifier
@Test public void testServiceNameUsingComponentName() throws AmbariException {
String serviceName=metaInfo.getComponentToService(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_COMPONENT_NAME);
assertEquals("HDFS",serviceName);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRepositoryDefault() throws Exception {
String buildDir=tmpFolder.getRoot().getAbsolutePath();
AmbariMetaInfo ambariMetaInfo=setupTempAmbariMetaInfo(buildDir);
ambariMetaInfo.init();
waitForAllReposToBeResolved(ambariMetaInfo);
List redhat6Repo=ambariMetaInfo.getRepositories(STACK_NAME_HDP,"2.1.1","redhat6");
assertNotNull(redhat6Repo);
for ( RepositoryInfo ri : redhat6Repo) {
if (STACK_NAME_HDP.equals(ri.getRepoName())) {
assertFalse(ri.getBaseUrl().equals(ri.getDefaultBaseUrl()));
assertEquals(ri.getBaseUrl(),ri.getLatestBaseUrl());
}
}
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
/**
* Method: Map getServices(String stackName, String
* version, String serviceName)
* @throws AmbariException
*/
@Test public void getServices() throws AmbariException {
Map services=metaInfo.getServices(STACK_NAME_HDP,STACK_VERSION_HDP);
LOG.info("Getting all the services ");
for ( Map.Entry entry : services.entrySet()) {
LOG.info("Service Name " + entry.getKey() + " values "+ entry.getValue());
}
assertTrue(services.containsKey("HDFS"));
assertTrue(services.containsKey("MAPREDUCE"));
assertNotNull(services);
assertFalse(services.keySet().size() == 0);
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCustomConfigDir() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","MAPREDUCE2");
boolean found=false;
for ( PropertyInfo pi : service.getProperties()) {
if (pi.getName().equals("mr2-prop")) {
Assert.assertEquals("some-mr2-value",pi.getValue());
found=true;
}
}
Assert.assertTrue(found);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetComponentDependency() throws AmbariException {
DependencyInfo dependency=metaInfo.getComponentDependency("HDP","1.3.4","HIVE","HIVE_SERVER","ZOOKEEPER_SERVER");
assertEquals("ZOOKEEPER/ZOOKEEPER_SERVER",dependency.getName());
assertEquals("ZOOKEEPER_SERVER",dependency.getComponentName());
assertEquals("ZOOKEEPER",dependency.getServiceName());
assertEquals("cluster",dependency.getScope());
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHive134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","HIVE");
List componentList=service.getComponents();
Assert.assertEquals(4,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("HIVE_METASTORE")) {
Assert.assertEquals(0,component.getDependencies().size());
AutoDeployInfo autoDeploy=component.getAutoDeploy();
Assert.assertTrue(autoDeploy.isEnabled());
Assert.assertEquals("HIVE/HIVE_SERVER",autoDeploy.getCoLocate());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("HIVE_SERVER")) {
List dependencyList=component.getDependencies();
Assert.assertEquals(1,dependencyList.size());
DependencyInfo dependency=dependencyList.get(0);
Assert.assertEquals("ZOOKEEPER/ZOOKEEPER_SERVER",dependency.getName());
Assert.assertEquals("cluster",dependency.getScope());
AutoDeployInfo autoDeploy=dependency.getAutoDeploy();
Assert.assertTrue(autoDeploy.isEnabled());
Assert.assertEquals("HIVE/HIVE_SERVER",autoDeploy.getCoLocate());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("MYSQL_SERVER")) {
Assert.assertEquals(0,component.getDependencies().size());
AutoDeployInfo autoDeploy=component.getAutoDeploy();
Assert.assertTrue(autoDeploy.isEnabled());
Assert.assertEquals("HIVE/HIVE_SERVER",autoDeploy.getCoLocate());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("HIVE_CLIENT")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests merging stack-based with existing definitions works
* @throws Exception
*/
@Test public void testAlertDefinitionMerging() throws Exception {
Injector injector=Guice.createInjector(Modules.override(new InMemoryDefaultTestModule()).with(new MockModule()));
injector.getInstance(GuiceJpaInitializer.class);
injector.getInstance(EntityManager.class);
long clusterId=injector.getInstance(OrmTestHelper.class).createCluster("cluster" + System.currentTimeMillis());
Class> c=metaInfo.getClass().getSuperclass();
Field f=c.getDeclaredField("alertDefinitionDao");
f.setAccessible(true);
f.set(metaInfo,injector.getInstance(AlertDefinitionDAO.class));
f=c.getDeclaredField("ambariServiceAlertDefinitions");
f.setAccessible(true);
f.set(metaInfo,injector.getInstance(AmbariServiceAlertDefinitions.class));
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=clusters.getClusterById(clusterId);
cluster.setDesiredStackVersion(new StackId(STACK_NAME_HDP,"2.0.6"));
cluster.addService("HDFS");
metaInfo.reconcileAlertDefinitions(clusters);
AlertDefinitionDAO dao=injector.getInstance(AlertDefinitionDAO.class);
List definitions=dao.findAll(clusterId);
assertEquals(9,definitions.size());
int hostAlertCount=0;
for ( AlertDefinitionEntity definition : definitions) {
if (definition.getServiceName().equals("AMBARI") && definition.getComponentName().equals("AMBARI_AGENT")) {
hostAlertCount++;
}
}
assertEquals(1,hostAlertCount);
assertEquals(8,definitions.size() - hostAlertCount);
for ( AlertDefinitionEntity definition : definitions) {
definition.setScheduleInterval(28);
dao.merge(definition);
}
metaInfo.reconcileAlertDefinitions(clusters);
definitions=dao.findAll();
assertEquals(9,definitions.size());
for ( AlertDefinitionEntity definition : definitions) {
assertEquals(28,definition.getScheduleInterval().intValue());
}
definitions=dao.findAllEnabled(cluster.getClusterId());
assertEquals(8,definitions.size());
AlertDefinitionEntity entity=new AlertDefinitionEntity();
entity.setClusterId(clusterId);
entity.setDefinitionName("bad_hdfs_alert");
entity.setLabel("Bad HDFS Alert");
entity.setDescription("A way to fake a component being removed");
entity.setEnabled(true);
entity.setHash(UUID.randomUUID().toString());
entity.setScheduleInterval(1);
entity.setServiceName("HDFS");
entity.setComponentName("BAD_COMPONENT");
entity.setSourceType(SourceType.METRIC);
entity.setSource("{\"type\" : \"METRIC\"}");
dao.create(entity);
definitions=dao.findAllEnabled(cluster.getClusterId());
assertEquals(9,definitions.size());
metaInfo.reconcileAlertDefinitions(clusters);
definitions=dao.findAllEnabled(cluster.getClusterId());
assertEquals(8,definitions.size());
definitions=dao.findAll();
assertEquals(10,definitions.size());
entity=dao.findById(entity.getDefinitionId());
assertFalse(entity.getEnabled());
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRepos() throws Exception {
Map> repos=metaInfo.getRepository(STACK_NAME_HDP,STACK_VERSION_HDP);
Set centos5Cnt=new HashSet();
Set centos6Cnt=new HashSet();
Set redhat6cnt=new HashSet();
Set redhat5cnt=new HashSet();
for ( List vals : repos.values()) {
for ( RepositoryInfo repo : vals) {
LOG.debug("Dumping repo info : " + repo.toString());
if (repo.getOsType().equals("centos5")) {
centos5Cnt.add(repo.getRepoId());
}
else if (repo.getOsType().equals("centos6")) {
centos6Cnt.add(repo.getRepoId());
}
else if (repo.getOsType().equals("redhat6")) {
redhat6cnt.add(repo.getRepoId());
}
else if (repo.getOsType().equals("redhat5")) {
redhat5cnt.add(repo.getRepoId());
}
else {
fail("Found invalid os " + repo.getOsType());
}
if (repo.getRepoId().equals("epel")) {
assertFalse(repo.getMirrorsList().isEmpty());
assertNull(repo.getBaseUrl());
}
else {
assertNull(repo.getMirrorsList());
assertFalse(repo.getBaseUrl().isEmpty());
}
}
}
assertEquals(3,centos5Cnt.size());
assertEquals(3,redhat6cnt.size());
assertEquals(3,redhat5cnt.size());
assertEquals(3,centos6Cnt.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetPropertiesNoName() throws Exception {
Set properties=metaInfo.getPropertiesByName(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS,PROPERTY_NAME);
Assert.assertEquals(1,properties.size());
for ( PropertyInfo propertyInfo : properties) {
Assert.assertEquals(PROPERTY_NAME,propertyInfo.getName());
Assert.assertEquals(FILE_NAME,propertyInfo.getFilename());
}
try {
metaInfo.getPropertiesByName(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS,NON_EXT_VALUE);
}
catch ( StackAccessException e) {
}
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testConfigDependencies() throws Exception {
ServiceInfo serviceInfo=metaInfo.getService(STACK_NAME_HDP,EXT_STACK_NAME,SERVICE_NAME_MAPRED2);
assertNotNull(serviceInfo);
assertTrue(!serviceInfo.getConfigDependencies().isEmpty());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetOperatingSystem() throws Exception {
OperatingSystemInfo operatingSystem=metaInfo.getOperatingSystem(STACK_NAME_HDP,STACK_VERSION_HDP,OS_TYPE);
Assert.assertEquals(operatingSystem.getOsType(),OS_TYPE);
try {
metaInfo.getOperatingSystem(STACK_NAME_HDP,STACK_VERSION_HDP,NON_EXT_VALUE);
}
catch ( StackAccessException e) {
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testMetaInfoFileFilter() throws Exception {
String buildDir=tmpFolder.getRoot().getAbsolutePath();
File stackRoot=new File("src/test/resources/stacks");
File version=new File("src/test/resources/version");
if (System.getProperty("os.name").contains("Windows")) {
stackRoot=new File(ClassLoader.getSystemClassLoader().getResource("stacks").getPath());
version=new File(new File(ClassLoader.getSystemClassLoader().getResource("").getPath()).getParent(),"version");
}
File stackRootTmp=new File(buildDir + "/ambari-metaInfo");
stackRootTmp.mkdir();
FileUtils.copyDirectory(stackRoot,stackRootTmp);
AmbariMetaInfo ambariMetaInfo=createAmbariMetaInfo(stackRootTmp,version);
File f1, f2, f3;
f1=new File(stackRootTmp.getAbsolutePath() + "/001.svn");
f1.createNewFile();
f2=new File(stackRootTmp.getAbsolutePath() + "/abcd.svn/001.svn");
f2.mkdirs();
f2.createNewFile();
f3=new File(stackRootTmp.getAbsolutePath() + "/.svn");
if (!f3.exists()) {
f3.createNewFile();
}
ambariMetaInfo.init();
getServices();
getComponentsByService();
Assert.assertNotNull(ambariMetaInfo.getStack("abcd.svn","001.svn"));
Assert.assertFalse(ambariMetaInfo.isSupportedStack(".svn",""));
Assert.assertFalse(ambariMetaInfo.isSupportedStack(".svn",""));
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testMetricsJson() throws Exception {
ServiceInfo svc=metaInfo.getService(STACK_NAME_HDP,"2.0.5","HDFS");
Assert.assertNotNull(svc);
Assert.assertNotNull(svc.getMetricsFile());
svc=metaInfo.getService(STACK_NAME_HDP,"2.0.6","HDFS");
Assert.assertNotNull(svc);
Assert.assertNotNull(svc.getMetricsFile());
List list=metaInfo.getMetrics(STACK_NAME_HDP,"2.0.5","HDFS",SERVICE_COMPONENT_NAME,Resource.Type.Component.name());
Assert.assertNotNull(list);
list=metaInfo.getMetrics(STACK_NAME_HDP,"2.0.5","HDFS","DATANODE",Resource.Type.Component.name());
Assert.assertNull(list);
List list0=metaInfo.getMetrics(STACK_NAME_HDP,"2.0.5","HDFS","DATANODE",Resource.Type.Component.name());
Assert.assertNull(list0);
Assert.assertTrue("Expecting subsequent calls to use a cached value for the definition",list == list0);
list=metaInfo.getMetrics(STACK_NAME_HDP,"2.0.6","HDFS","DATANODE",Resource.Type.Component.name());
Assert.assertNull(list);
}
InternalCallVerifier EqualityVerifier
@Test public void testServiceSchemaVersionInheritance() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","SQOOP");
Assert.assertEquals("2.0",service.getSchemaVersion());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","SQOOP");
Assert.assertEquals("2.0",service.getSchemaVersion());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPasswordPropertyAttribute() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.1","HIVE");
List propertyInfoList=service.getProperties();
Assert.assertNotNull(propertyInfoList);
PropertyInfo passwordProperty=null;
for ( PropertyInfo propertyInfo : propertyInfoList) {
if (propertyInfo.isRequireInput() && propertyInfo.getPropertyTypes().contains(PropertyInfo.PropertyType.PASSWORD)) {
passwordProperty=propertyInfo;
}
else {
Assert.assertTrue(propertyInfo.getPropertyTypes().isEmpty());
}
}
Assert.assertNotNull(passwordProperty);
Assert.assertEquals("javax.jdo.option.ConnectionPassword",passwordProperty.getName());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testBadStack() throws Exception {
File stackRoot=new File("src/test/resources/bad-stacks");
File version=new File("src/test/resources/version");
if (System.getProperty("os.name").contains("Windows")) {
stackRoot=new File(ClassLoader.getSystemClassLoader().getResource("bad-stacks").getPath());
version=new File(new File(ClassLoader.getSystemClassLoader().getResource("").getPath()).getParent(),"version");
}
LOG.info("Stacks file " + stackRoot.getAbsolutePath());
TestAmbariMetaInfo ambariMetaInfo=createAmbariMetaInfo(stackRoot,version);
Assert.assertEquals(1,ambariMetaInfo.getStackManager().getStacks().size());
Assert.assertEquals(false,ambariMetaInfo.getStackManager().getStack("HDP","0.1").isValid());
Assert.assertEquals(2,ambariMetaInfo.getStackManager().getStack("HDP","0.1").getErrors().size());
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void getComponentsByService() throws AmbariException {
List components=metaInfo.getComponentsByService(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS);
assertNotNull(components);
assertTrue(components.size() > 0);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testKerberosDescriptor() throws Exception {
ServiceInfo service;
service=metaInfo.getService(STACK_NAME_HDP,"2.1.1","PIG");
Assert.assertNotNull(service);
Assert.assertNull(service.getKerberosDescriptorFile());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
Assert.assertNotNull(service);
Assert.assertNotNull(service.getKerberosDescriptorFile());
service=metaInfo.getService(STACK_NAME_HDP,"2.1.1","HDFS");
Assert.assertNotNull(service);
Assert.assertNotNull(service.getKerberosDescriptorFile());
Map,?> kerberosDescriptorData=new Gson().fromJson(new FileReader(service.getKerberosDescriptorFile()),Map.class);
Assert.assertNotNull(kerberosDescriptorData);
Assert.assertEquals(1,kerberosDescriptorData.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetPropertiesSharedName() throws Exception {
Set properties=metaInfo.getPropertiesByName(STACK_NAME_HDP,STACK_VERSION_HDP_02,SERVICE_NAME_HDFS,SHARED_PROPERTY_NAME);
Assert.assertEquals(2,properties.size());
for ( PropertyInfo propertyInfo : properties) {
Assert.assertEquals(SHARED_PROPERTY_NAME,propertyInfo.getName());
Assert.assertTrue(propertyInfo.getFilename().equals(HADOOP_ENV_FILE_NAME) || propertyInfo.getFilename().equals(HDFS_LOG4J_FILE_NAME));
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetProperties() throws Exception {
Set properties=metaInfo.getServiceProperties(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS);
Assert.assertEquals(properties.size(),PROPERTIES_CNT);
}
InternalCallVerifier EqualityVerifier
@Test public void testServiceOsSpecificsInheritance() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HDFS");
Assert.assertEquals("parent-package-def",service.getOsSpecifics().get("any").getPackages().get(0).getName());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HBASE");
Assert.assertEquals(2,service.getOsSpecifics().keySet().size());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HBASE");
Assert.assertEquals(2,service.getOsSpecifics().keySet().size());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
Assert.assertEquals("child-package-def",service.getOsSpecifics().get("any").getPackages().get(0).getName());
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHBase134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","HBASE");
List componentList=service.getComponents();
Assert.assertEquals(3,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("HBASE_MASTER")) {
List dependencyList=component.getDependencies();
Assert.assertEquals(2,dependencyList.size());
for ( DependencyInfo dependency : dependencyList) {
if (dependency.getName().equals("HDFS/HDFS_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else if (dependency.getName().equals("ZOOKEEPER/ZOOKEEPER_SERVER")) {
Assert.assertEquals("cluster",dependency.getScope());
AutoDeployInfo autoDeploy=dependency.getAutoDeploy();
Assert.assertEquals(true,autoDeploy.isEnabled());
Assert.assertEquals("HBASE/HBASE_MASTER",autoDeploy.getCoLocate());
}
else {
Assert.fail("Unexpected dependency");
}
}
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("HBASE_REGIONSERVER")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1+",component.getCardinality());
}
if (name.equals("HBASE_CLIENT")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
}
}
InternalCallVerifier BooleanVerifier
@Test public void isValidService() throws AmbariException {
boolean valid=metaInfo.isValidService(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS);
assertTrue(valid);
boolean invalid=metaInfo.isValidService(STACK_NAME_HDP,STACK_VERSION_HDP,NON_EXT_VALUE);
assertFalse(invalid);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetKerberosDescriptor() throws AmbariException {
KerberosDescriptor descriptor=metaInfo.getKerberosDescriptor(STACK_NAME_HDP,"2.0.8");
Assert.assertNotNull(descriptor);
Assert.assertNotNull(descriptor.getProperties());
Assert.assertEquals(3,descriptor.getProperties().size());
Assert.assertNotNull(descriptor.getIdentities());
Assert.assertEquals(1,descriptor.getIdentities().size());
Assert.assertEquals("spnego",descriptor.getIdentities().get(0).getName());
Assert.assertNotNull(descriptor.getConfigurations());
Assert.assertEquals(1,descriptor.getConfigurations().size());
Assert.assertNotNull(descriptor.getConfigurations().get("core-site"));
Assert.assertNotNull(descriptor.getConfiguration("core-site"));
Assert.assertNotNull(descriptor.getServices());
Assert.assertEquals(1,descriptor.getServices().size());
Assert.assertNotNull(descriptor.getServices().get("HDFS"));
Assert.assertNotNull(descriptor.getService("HDFS"));
}
InternalCallVerifier EqualityVerifier
@Test public void testPropertyCount() throws Exception {
Set properties=metaInfo.getServiceProperties(STACK_NAME_HDP,STACK_VERSION_HDP_02,SERVICE_NAME_HDFS);
Assert.assertEquals(103,properties.size());
}
APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSqoop134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","SQOOP");
List componentList=service.getComponents();
Assert.assertEquals(1,componentList.size());
ComponentInfo component=componentList.get(0);
Assert.assertEquals("SQOOP",component.getName());
List dependencyList=component.getDependencies();
Assert.assertEquals(2,dependencyList.size());
for ( DependencyInfo dependency : dependencyList) {
if (dependency.getName().equals("HDFS/HDFS_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else if (dependency.getName().equals("MAPREDUCE/MAPREDUCE_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else {
Assert.fail("Unexpected dependency");
}
}
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPig134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","PIG");
List componentList=service.getComponents();
Assert.assertEquals(1,componentList.size());
ComponentInfo component=componentList.get(0);
Assert.assertEquals("PIG",component.getName());
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
InternalCallVerifier BooleanVerifier
@Test public void isSupportedStack() throws AmbariException {
boolean supportedStack=metaInfo.isSupportedStack(STACK_NAME_HDP,STACK_VERSION_HDP);
assertTrue(supportedStack);
boolean notSupportedStack=metaInfo.isSupportedStack(NON_EXT_VALUE,NON_EXT_VALUE);
assertFalse(notSupportedStack);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetOperatingSystems() throws Exception {
Set operatingSystems=metaInfo.getOperatingSystems(STACK_NAME_HDP,STACK_VERSION_HDP);
Assert.assertEquals(OS_CNT,operatingSystems.size());
}
APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testWebHCat134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","WEBHCAT");
List componentList=service.getComponents();
Assert.assertEquals(1,componentList.size());
ComponentInfo component=componentList.get(0);
Assert.assertEquals("WEBHCAT_SERVER",component.getName());
List dependencyList=component.getDependencies();
Assert.assertEquals(4,dependencyList.size());
for ( DependencyInfo dependency : dependencyList) {
if (dependency.getName().equals("HDFS/HDFS_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else if (dependency.getName().equals("MAPREDUCE/MAPREDUCE_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else if (dependency.getName().equals("ZOOKEEPER/ZOOKEEPER_SERVER")) {
Assert.assertEquals("cluster",dependency.getScope());
AutoDeployInfo autoDeploy=dependency.getAutoDeploy();
Assert.assertEquals(true,autoDeploy.isEnabled());
Assert.assertEquals("WEBHCAT/WEBHCAT_SERVER",autoDeploy.getCoLocate());
}
else if (dependency.getName().equals("ZOOKEEPER/ZOOKEEPER_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else {
Assert.fail("Unexpected dependency");
}
}
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void getRepository() throws AmbariException {
Map> repository=metaInfo.getRepository(STACK_NAME_HDP,STACK_VERSION_HDP);
assertNotNull(repository);
assertFalse(repository.get("centos5").isEmpty());
assertFalse(repository.get("centos6").isEmpty());
}
InternalCallVerifier EqualityVerifier
@Test public void testHooksDirInheritance() throws Exception {
String hookAssertionTemplate="HDP/%s/hooks";
if (System.getProperty("os.name").contains("Windows")) {
hookAssertionTemplate="HDP\\%s\\hooks";
}
StackInfo stackInfo=metaInfo.getStack(STACK_NAME_HDP,"2.0.6");
Assert.assertEquals(String.format(hookAssertionTemplate,"2.0.6"),stackInfo.getStackHooksFolder());
stackInfo=metaInfo.getStack(STACK_NAME_HDP,"2.0.7");
Assert.assertEquals(String.format(hookAssertionTemplate,"2.0.6"),stackInfo.getStackHooksFolder());
stackInfo=metaInfo.getStack(STACK_NAME_HDP,"2.0.8");
Assert.assertEquals(String.format(hookAssertionTemplate,"2.0.8"),stackInfo.getStackHooksFolder());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testExtendedStackDefinition() throws Exception {
StackInfo stackInfo=metaInfo.getStack(STACK_NAME_HDP,EXT_STACK_NAME);
Assert.assertTrue(stackInfo != null);
Collection serviceInfos=stackInfo.getServices();
Assert.assertFalse(serviceInfos.isEmpty());
Assert.assertTrue(serviceInfos.size() > 1);
ServiceInfo deletedService=null;
ServiceInfo redefinedService=null;
for ( ServiceInfo serviceInfo : serviceInfos) {
if (serviceInfo.getName().equals("SQOOP")) {
deletedService=serviceInfo;
}
if (serviceInfo.getName().equals("YARN")) {
redefinedService=serviceInfo;
}
}
Assert.assertNull("SQOOP is a deleted service, should not be a part of " + "the extended stack.",deletedService);
Assert.assertNotNull(redefinedService);
Assert.assertEquals("YARN service is expected to be defined with 3 active" + " components.",3,redefinedService.getComponents().size());
Assert.assertEquals("TEZ is expected to be a part of extended stack " + "definition","TEZ",redefinedService.getClientComponent().getName());
Assert.assertFalse("YARN CLIENT is a deleted component.",redefinedService.getClientComponent().getName().equals("YARN_CLIENT"));
Assert.assertNotNull(redefinedService.getProperties());
Assert.assertTrue(redefinedService.getProperties().size() > 4);
PropertyInfo deleteProperty1=null;
PropertyInfo deleteProperty2=null;
PropertyInfo redefinedProperty1=null;
PropertyInfo redefinedProperty2=null;
PropertyInfo redefinedProperty3=null;
PropertyInfo inheritedProperty=null;
PropertyInfo newProperty=null;
PropertyInfo newEnhancedProperty=null;
PropertyInfo propertyWithExtraValueAttributes=null;
PropertyInfo originalProperty=null;
PropertyDependencyInfo propertyDependencyInfo=new PropertyDependencyInfo("yarn-site","new-enhanced-yarn-property");
for ( PropertyInfo propertyInfo : redefinedService.getProperties()) {
if (propertyInfo.getName().equals("yarn.resourcemanager.resource-tracker.address")) {
deleteProperty1=propertyInfo;
}
else if (propertyInfo.getName().equals("yarn.resourcemanager.scheduler.address")) {
deleteProperty2=propertyInfo;
}
else if (propertyInfo.getName().equals("yarn.resourcemanager.address")) {
redefinedProperty1=propertyInfo;
}
else if (propertyInfo.getName().equals("yarn.resourcemanager.admin.address")) {
redefinedProperty2=propertyInfo;
}
else if (propertyInfo.getName().equals("yarn.nodemanager.health-checker.interval-ms")) {
redefinedProperty3=propertyInfo;
}
else if (propertyInfo.getName().equals("yarn.nodemanager.address")) {
inheritedProperty=propertyInfo;
}
else if (propertyInfo.getName().equals("new-yarn-property")) {
newProperty=propertyInfo;
}
else if (propertyInfo.getName().equals("new-enhanced-yarn-property")) {
newEnhancedProperty=propertyInfo;
}
else if (propertyInfo.getName().equals("yarn.nodemanager.aux-services")) {
originalProperty=propertyInfo;
}
else if (propertyInfo.getName().equals("property.with.extra.value.attributes")) {
propertyWithExtraValueAttributes=propertyInfo;
}
}
Assert.assertNull(deleteProperty1);
Assert.assertNull(deleteProperty2);
Assert.assertNotNull(redefinedProperty1);
Assert.assertNotNull(redefinedProperty2);
Assert.assertNotNull("yarn.nodemanager.address expected to be inherited " + "from parent",inheritedProperty);
Assert.assertEquals("localhost:100009",redefinedProperty1.getValue());
Assert.assertNotNull(redefinedProperty3);
Assert.assertEquals("135000",redefinedProperty3.getValue());
Assert.assertEquals("",redefinedProperty2.getValue());
Assert.assertNotNull(newProperty);
Assert.assertEquals("some-value",newProperty.getValue());
Assert.assertEquals("some description.",newProperty.getDescription());
Assert.assertEquals("yarn-site.xml",newProperty.getFilename());
Assert.assertEquals(1,newProperty.getDependedByProperties().size());
Assert.assertTrue(newProperty.getDependedByProperties().contains(propertyDependencyInfo));
Assert.assertNotNull(newEnhancedProperty);
Assert.assertEquals("1024",newEnhancedProperty.getValue());
Assert.assertEquals("some enhanced description.",newEnhancedProperty.getDescription());
Assert.assertEquals("yarn-site.xml",newEnhancedProperty.getFilename());
Assert.assertEquals(2,newEnhancedProperty.getDependsOnProperties().size());
Assert.assertTrue(newEnhancedProperty.getDependsOnProperties().contains(new PropertyDependencyInfo("yarn-site","new-yarn-property")));
Assert.assertTrue(newEnhancedProperty.getDependsOnProperties().contains(new PropertyDependencyInfo("global","yarn_heapsize")));
Assert.assertEquals("MB",newEnhancedProperty.getPropertyValueAttributes().getUnit());
Assert.assertEquals("int",newEnhancedProperty.getPropertyValueAttributes().getType());
Assert.assertEquals("512",newEnhancedProperty.getPropertyValueAttributes().getMinimum());
Assert.assertEquals("15360",newEnhancedProperty.getPropertyValueAttributes().getMaximum());
Assert.assertEquals("256",newEnhancedProperty.getPropertyValueAttributes().getIncrementStep());
Assert.assertNull(newEnhancedProperty.getPropertyValueAttributes().getEntries());
Assert.assertNull(newEnhancedProperty.getPropertyValueAttributes().getEntriesEditable());
Assert.assertTrue(propertyWithExtraValueAttributes.getPropertyValueAttributes().getEmptyValueValid());
Assert.assertTrue(propertyWithExtraValueAttributes.getPropertyValueAttributes().getVisible());
Assert.assertTrue(propertyWithExtraValueAttributes.getPropertyValueAttributes().getReadOnly());
Assert.assertEquals(Boolean.FALSE,propertyWithExtraValueAttributes.getPropertyValueAttributes().getEditableOnlyAtInstall());
Assert.assertEquals(Boolean.FALSE,propertyWithExtraValueAttributes.getPropertyValueAttributes().getOverridable());
Assert.assertEquals(Boolean.FALSE,propertyWithExtraValueAttributes.getPropertyValueAttributes().getShowPropertyName());
Assert.assertNotNull(originalProperty);
Assert.assertEquals("mapreduce.shuffle",originalProperty.getValue());
Assert.assertEquals("Auxilliary services of NodeManager",originalProperty.getDescription());
Assert.assertEquals(6,redefinedService.getConfigDependencies().size());
Assert.assertEquals(7,redefinedService.getConfigDependenciesWithComponents().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHue134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","HUE");
List componentList=service.getComponents();
Assert.assertEquals(1,componentList.size());
ComponentInfo component=componentList.get(0);
Assert.assertEquals("HUE_SERVER",component.getName());
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testChildCustomCommandScriptInheritance() throws Exception {
ComponentInfo component=metaInfo.getComponent(STACK_NAME_HDP,"2.0.7","HDFS","NAMENODE");
CustomCommandDefinition ccd=findCustomCommand("DECOMMISSION",component);
Assert.assertEquals("scripts/namenode_dec.py",ccd.getCommandScript().getScript());
ccd=findCustomCommand("YET_ANOTHER_PARENT_COMMAND",component);
Assert.assertEquals("scripts/yet_another_parent_command.py",ccd.getCommandScript().getScript());
ccd=findCustomCommand("REBALANCEHDFS",component);
Assert.assertEquals("scripts/namenode.py",ccd.getCommandScript().getScript());
Assert.assertTrue(ccd.isBackground());
Assert.assertEquals(3,component.getCustomCommands().size());
component=metaInfo.getComponent(STACK_NAME_HDP,"2.0.8","HDFS","NAMENODE");
Assert.assertEquals(4,component.getCustomCommands().size());
ccd=findCustomCommand("YET_ANOTHER_PARENT_COMMAND",component);
Assert.assertEquals("scripts/yet_another_parent_command.py",ccd.getCommandScript().getScript());
ccd=findCustomCommand("DECOMMISSION",component);
Assert.assertEquals("scripts/namenode_dec_overr.py",ccd.getCommandScript().getScript());
ccd=findCustomCommand("YET_ANOTHER_CHILD_COMMAND",component);
Assert.assertEquals("scripts/yet_another_child_command.py",ccd.getCommandScript().getScript());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testKerberosJson() throws Exception {
ServiceInfo svc;
svc=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
Assert.assertNotNull(svc);
File kerberosDescriptorFile1=svc.getKerberosDescriptorFile();
Assert.assertNotNull(kerberosDescriptorFile1);
Assert.assertTrue(kerberosDescriptorFile1.exists());
svc=metaInfo.getService(STACK_NAME_HDP,"2.1.1","HDFS");
Assert.assertNotNull(svc);
File kerberosDescriptorFile2=svc.getKerberosDescriptorFile();
Assert.assertNotNull(kerberosDescriptorFile1);
Assert.assertTrue(kerberosDescriptorFile1.exists());
Assert.assertEquals(kerberosDescriptorFile1,kerberosDescriptorFile2);
svc=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HDFS");
Assert.assertNotNull(svc);
File kerberosDescriptorFile3=svc.getKerberosDescriptorFile();
Assert.assertNull(kerberosDescriptorFile3);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testServiceCustomCommandScriptInheritance() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HDFS");
CustomCommandDefinition ccd=findCustomCommand("RESTART",service);
Assert.assertEquals("scripts/restart_parent.py",ccd.getCommandScript().getScript());
ccd=findCustomCommand("YET_ANOTHER_PARENT_SRV_COMMAND",service);
Assert.assertEquals("scripts/yet_another_parent_srv_command.py",ccd.getCommandScript().getScript());
Assert.assertEquals(2,service.getCustomCommands().size());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
Assert.assertEquals(3,service.getCustomCommands().size());
ccd=findCustomCommand("YET_ANOTHER_PARENT_SRV_COMMAND",service);
Assert.assertEquals("scripts/yet_another_parent_srv_command.py",ccd.getCommandScript().getScript());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
ccd=findCustomCommand("RESTART",service);
Assert.assertEquals("scripts/restart_child.py",ccd.getCommandScript().getScript());
ccd=findCustomCommand("YET_ANOTHER_CHILD_SRV_COMMAND",service);
Assert.assertEquals("scripts/yet_another_child_srv_command.py",ccd.getCommandScript().getScript());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetComponentDependencies() throws AmbariException {
List dependencies=metaInfo.getComponentDependencies("HDP","1.3.4","HBASE","HBASE_MASTER");
assertEquals(2,dependencies.size());
DependencyInfo dependency=dependencies.get(0);
assertEquals("HDFS/HDFS_CLIENT",dependency.getName());
assertEquals("HDFS_CLIENT",dependency.getComponentName());
assertEquals("HDFS",dependency.getServiceName());
assertEquals("host",dependency.getScope());
dependency=dependencies.get(1);
assertEquals("ZOOKEEPER/ZOOKEEPER_SERVER",dependency.getName());
assertEquals("ZOOKEEPER_SERVER",dependency.getComponentName());
assertEquals("ZOOKEEPER",dependency.getServiceName());
assertEquals("cluster",dependency.getScope());
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRepositoryNoInternetDefault() throws Exception {
String buildDir=tmpFolder.getRoot().getAbsolutePath();
AmbariMetaInfo ambariMetaInfo=setupTempAmbariMetaInfo(buildDir);
File latestUrlFile=new File(buildDir,"ambari-metaInfo/HDP/2.1.1/repos/hdp.json");
if (System.getProperty("os.name").contains("Windows")) {
latestUrlFile.deleteOnExit();
}
else {
FileUtils.deleteQuietly(latestUrlFile);
assertTrue(!latestUrlFile.exists());
}
ambariMetaInfo.init();
List redhat6Repo=ambariMetaInfo.getRepositories(STACK_NAME_HDP,"2.1.1","redhat6");
assertNotNull(redhat6Repo);
for ( RepositoryInfo ri : redhat6Repo) {
if (STACK_NAME_HDP.equals(ri.getRepoName())) {
assertEquals(ri.getBaseUrl(),ri.getDefaultBaseUrl());
}
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetRackSensitiveServicesNames() throws AmbariException {
Set res=metaInfo.getRackSensitiveServicesNames(STACK_NAME_HDP,"2.0.7");
assertEquals(1,res.size());
assertEquals("HDFS",res.iterator().next());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetComponent() throws Exception {
ComponentInfo component=metaInfo.getComponent(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS,SERVICE_COMPONENT_NAME);
Assert.assertEquals(component.getName(),SERVICE_COMPONENT_NAME);
try {
metaInfo.getComponent(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS,NON_EXT_VALUE);
}
catch ( StackAccessException e) {
}
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGanglia134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","GANGLIA");
List componentList=service.getComponents();
Assert.assertEquals(2,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("GANGLIA_SERVER")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("GANGLIA_MONITOR")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertTrue(component.getAutoDeploy().isEnabled());
Assert.assertEquals("ALL",component.getCardinality());
}
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetRepositories() throws Exception {
List repositories=metaInfo.getRepositories(STACK_NAME_HDP,STACK_VERSION_HDP,OS_TYPE);
Assert.assertEquals(repositories.size(),REPOS_CNT);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRepositoryUpdatedUtilsBaseUrl() throws Exception {
String stackVersion="0.2";
String buildDir=tmpFolder.getRoot().getAbsolutePath();
TestAmbariMetaInfo ambariMetaInfo=setupTempAmbariMetaInfo(buildDir);
String newBaseUrl="http://myprivate-repo-1.hortonworks.com/HDP-Utils/centos6/2.x/updates/2.0.6.0";
ambariMetaInfo.updateRepoBaseURL(STACK_NAME_HDP,stackVersion,"redhat6",REPO_ID,newBaseUrl);
RepositoryInfo repoInfo=ambariMetaInfo.getRepository(STACK_NAME_HDP,stackVersion,"redhat6",REPO_ID);
assertEquals(newBaseUrl,repoInfo.getBaseUrl());
String prevBaseUrl=repoInfo.getDefaultBaseUrl();
MetainfoDAO metainfoDAO=ambariMetaInfo.metaInfoDAO;
reset(metainfoDAO);
MetainfoEntity entity=createNiceMock(MetainfoEntity.class);
expect(metainfoDAO.findByKey("repo:/HDP/0.2/redhat6/HDP-UTILS-1.1.0.15:baseurl")).andReturn(entity).atLeastOnce();
expect(entity.getMetainfoValue()).andReturn(newBaseUrl).atLeastOnce();
replay(metainfoDAO,entity);
ambariMetaInfo.init();
List redhat6Repo=ambariMetaInfo.getRepositories(STACK_NAME_HDP,stackVersion,"redhat6");
assertNotNull(redhat6Repo);
for ( RepositoryInfo ri : redhat6Repo) {
if (HDP_UTILS_REPO_NAME.equals(ri.getRepoName())) {
assertEquals(newBaseUrl,ri.getBaseUrl());
assertFalse(ri.getBaseUrl().equals(ri.getDefaultBaseUrl()));
}
}
ambariMetaInfo.updateRepoBaseURL(STACK_NAME_HDP,stackVersion,"redhat6",REPO_ID,prevBaseUrl);
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testZooKeeper134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","ZOOKEEPER");
List componentList=service.getComponents();
Assert.assertEquals(2,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("ZOOKEEPER_SERVER")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("ZOOKEEPER_CLIENT")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
}
}
InternalCallVerifier EqualityVerifier
@Test public void getRestartRequiredServicesNames() throws AmbariException {
Set res=metaInfo.getRestartRequiredServicesNames(STACK_NAME_HDP,"2.0.7");
assertEquals(1,res.size());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMapReduce134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","MAPREDUCE");
List componentList=service.getComponents();
Assert.assertEquals(4,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("JOBTRACKER")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("TASKTRACKER")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1+",component.getCardinality());
}
if (name.equals("HISTORYSERVER")) {
Assert.assertEquals(0,component.getDependencies().size());
AutoDeployInfo autoDeploy=component.getAutoDeploy();
Assert.assertTrue(autoDeploy.isEnabled());
Assert.assertEquals("MAPREDUCE/JOBTRACKER",autoDeploy.getCoLocate());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("MAPREDUCE_CLIENT")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
}
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testOozie134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","OOZIE");
List componentList=service.getComponents();
Assert.assertEquals(2,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("OOZIE_SERVER")) {
List dependencyList=component.getDependencies();
Assert.assertEquals(2,dependencyList.size());
for ( DependencyInfo dependency : dependencyList) {
if (dependency.getName().equals("HDFS/HDFS_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else if (dependency.getName().equals("MAPREDUCE/MAPREDUCE_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else {
Assert.fail("Unexpected dependency");
}
}
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("OOZIE_CLIENT")) {
List dependencyList=component.getDependencies();
Assert.assertEquals(2,dependencyList.size());
for ( DependencyInfo dependency : dependencyList) {
if (dependency.getName().equals("HDFS/HDFS_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else if (dependency.getName().equals("MAPREDUCE/MAPREDUCE_CLIENT")) {
Assert.assertEquals("host",dependency.getScope());
Assert.assertEquals(true,dependency.getAutoDeploy().isEnabled());
}
else {
Assert.fail("Unexpected dependency");
}
}
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
}
}
InternalCallVerifier EqualityVerifier
@Test public void testServiceCommandScriptInheritance() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HDFS");
Assert.assertEquals("scripts/service_check_1.py",service.getCommandScript().getScript());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HBASE");
Assert.assertEquals("scripts/service_check.py",service.getCommandScript().getScript());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HBASE");
Assert.assertEquals("scripts/service_check.py",service.getCommandScript().getScript());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
Assert.assertEquals("scripts/service_check_2.py",service.getCommandScript().getScript());
}
InternalCallVerifier BooleanVerifier
@Test public void isOsSupported() throws Exception {
Assert.assertTrue(metaInfo.isOsSupported("redhat5"));
Assert.assertTrue(metaInfo.isOsSupported("centos5"));
Assert.assertTrue(metaInfo.isOsSupported("oraclelinux5"));
Assert.assertTrue(metaInfo.isOsSupported("redhat6"));
Assert.assertTrue(metaInfo.isOsSupported("centos6"));
Assert.assertTrue(metaInfo.isOsSupported("oraclelinux6"));
Assert.assertTrue(metaInfo.isOsSupported("suse11"));
Assert.assertTrue(metaInfo.isOsSupported("sles11"));
Assert.assertTrue(metaInfo.isOsSupported("ubuntu12"));
Assert.assertTrue(metaInfo.isOsSupported("win2008server6"));
Assert.assertTrue(metaInfo.isOsSupported("win2008serverr26"));
Assert.assertTrue(metaInfo.isOsSupported("win2012server6"));
Assert.assertTrue(metaInfo.isOsSupported("win2012serverr26"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetStackParentVersions() throws Exception {
List parents=metaInfo.getStackParentVersions(STACK_NAME_HDP,"2.0.8");
Assert.assertEquals(3,parents.size());
Assert.assertEquals("2.0.7",parents.get(0));
Assert.assertEquals("2.0.6",parents.get(1));
Assert.assertEquals("2.0.5",parents.get(2));
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRepositoryNoInternetUpdatedBaseUrl() throws Exception {
String newBaseUrl="http://myprivate-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0";
String buildDir=tmpFolder.getRoot().getAbsolutePath();
TestAmbariMetaInfo ambariMetaInfo=setupTempAmbariMetaInfo(buildDir);
File latestUrlFile=new File(buildDir,"ambari-metaInfo/HDP/2.1.1/repos/hdp.json");
if (System.getProperty("os.name").contains("Windows")) {
latestUrlFile.deleteOnExit();
}
else {
FileUtils.deleteQuietly(latestUrlFile);
assertTrue(!latestUrlFile.exists());
}
ambariMetaInfo.updateRepoBaseURL("HDP","2.1.1","redhat6","HDP-2.1.1",newBaseUrl);
RepositoryInfo repoInfo=ambariMetaInfo.getRepository(STACK_NAME_HDP,"2.1.1","redhat6",STACK_NAME_HDP + "-2.1.1");
assertEquals(newBaseUrl,repoInfo.getBaseUrl());
String prevBaseUrl=repoInfo.getDefaultBaseUrl();
MetainfoDAO metainfoDAO=ambariMetaInfo.metaInfoDAO;
reset(metainfoDAO);
MetainfoEntity entity=createNiceMock(MetainfoEntity.class);
expect(metainfoDAO.findByKey("repo:/HDP/2.1.1/redhat6/HDP-2.1.1:baseurl")).andReturn(entity).atLeastOnce();
expect(entity.getMetainfoValue()).andReturn(newBaseUrl).atLeastOnce();
replay(metainfoDAO,entity);
ambariMetaInfo.init();
waitForAllReposToBeResolved(ambariMetaInfo);
List redhat6Repo=ambariMetaInfo.getRepositories(STACK_NAME_HDP,"2.1.1","redhat6");
assertNotNull(redhat6Repo);
for ( RepositoryInfo ri : redhat6Repo) {
if (STACK_NAME_HDP.equals(ri.getRepoName())) {
assertEquals(newBaseUrl,ri.getBaseUrl());
assertFalse(ri.getDefaultBaseUrl().equals(ri.getBaseUrl()));
}
}
ambariMetaInfo.updateRepoBaseURL(STACK_NAME_HDP,"2.1.1","redhat6",STACK_NAME_HDP + "-2.1.1",prevBaseUrl);
}
InternalCallVerifier EqualityVerifier
@Test public void testServicePackageDirInheritance() throws Exception {
String assertionTemplate07=StringUtils.join(new String[]{"stacks","HDP","2.0.7","services","%s","package"},File.separator);
String assertionTemplate08=StringUtils.join(new String[]{"stacks","HDP","2.0.8","services","%s","package"},File.separator);
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HBASE");
Assert.assertEquals(String.format(assertionTemplate07,"HBASE"),service.getServicePackageFolder());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.7","HDFS");
Assert.assertEquals(String.format(assertionTemplate07,"HDFS"),service.getServicePackageFolder());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HBASE");
Assert.assertEquals(String.format(assertionTemplate07,"HBASE"),service.getServicePackageFolder());
service=metaInfo.getService(STACK_NAME_HDP,"2.0.8","HDFS");
Assert.assertEquals(String.format(assertionTemplate08,"HDFS"),service.getServicePackageFolder());
}
InternalCallVerifier NullVerifier
/**
* Method: getServiceInfo(String stackName, String version, String
* serviceName)
*/
@Test public void getServiceInfo() throws Exception {
ServiceInfo si=metaInfo.getService(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS);
assertNotNull(si);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetStackInfo() throws Exception {
StackInfo stackInfo=metaInfo.getStack(STACK_NAME_HDP,STACK_VERSION_HDP);
Assert.assertEquals(stackInfo.getName(),STACK_NAME_HDP);
Assert.assertEquals(stackInfo.getVersion(),STACK_VERSION_HDP);
Assert.assertEquals(stackInfo.getMinUpgradeVersion(),STACK_MINIMAL_VERSION_HDP);
try {
metaInfo.getStack(STACK_NAME_HDP,NON_EXT_VALUE);
}
catch ( StackAccessException e) {
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetRepository() throws Exception {
RepositoryInfo repository=metaInfo.getRepository(STACK_NAME_HDP,STACK_VERSION_HDP,OS_TYPE,REPO_ID);
Assert.assertEquals(repository.getRepoId(),REPO_ID);
try {
metaInfo.getRepository(STACK_NAME_HDP,STACK_VERSION_HDP,OS_TYPE,NON_EXT_VALUE);
}
catch ( StackAccessException e) {
}
}
InternalCallVerifier EqualityVerifier
@Test public void testComponentCommandScriptInheritance() throws Exception {
ComponentInfo component=metaInfo.getComponent(STACK_NAME_HDP,"2.0.7","HDFS","HDFS_CLIENT");
Assert.assertEquals("scripts/hdfs_client.py",component.getCommandScript().getScript());
component=metaInfo.getComponent(STACK_NAME_HDP,"2.0.7","HBASE","HBASE_MASTER");
Assert.assertEquals("scripts/hbase_master.py",component.getCommandScript().getScript());
component=metaInfo.getComponent(STACK_NAME_HDP,"2.0.8","HBASE","HBASE_MASTER");
Assert.assertEquals("scripts/hbase_master.py",component.getCommandScript().getScript());
component=metaInfo.getComponent(STACK_NAME_HDP,"2.0.8","HDFS","HDFS_CLIENT");
Assert.assertEquals("scripts/hdfs_client_overridden.py",component.getCommandScript().getScript());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetService() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,STACK_VERSION_HDP,SERVICE_NAME_HDFS);
Assert.assertEquals(service.getName(),SERVICE_NAME_HDFS);
try {
metaInfo.getService(STACK_NAME_HDP,STACK_VERSION_HDP,NON_EXT_VALUE);
}
catch ( StackAccessException e) {
}
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHDFS134Dependencies() throws Exception {
ServiceInfo service=metaInfo.getService(STACK_NAME_HDP,"1.3.4","HDFS");
List componentList=service.getComponents();
Assert.assertEquals(4,componentList.size());
for ( ComponentInfo component : componentList) {
String name=component.getName();
if (name.equals("NAMENODE")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("DATANODE")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1+",component.getCardinality());
}
if (name.equals("SECONDARY_NAMENODE")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("1",component.getCardinality());
}
if (name.equals("HDFS_CLIENT")) {
Assert.assertEquals(0,component.getDependencies().size());
Assert.assertNull(component.getAutoDeploy());
Assert.assertEquals("0+",component.getCardinality());
}
}
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCrossCheckJmxToGangliaMetrics() throws Exception {
File stacks=new File("src/main/resources/stacks");
File version=new File("src/test/resources/version");
File commonServicesRoot=new File("src/main/resources/common-services");
if (System.getProperty("os.name").contains("Windows")) {
stacks=new File(ClassLoader.getSystemClassLoader().getResource("stacks").getPath());
version=new File(new File(ClassLoader.getSystemClassLoader().getResource("").getPath()).getParent(),"version");
commonServicesRoot=new File(ClassLoader.getSystemClassLoader().getResource("common-services").getPath());
}
Properties properties=new Properties();
properties.setProperty(Configuration.METADATA_DIR_PATH,stacks.getPath());
properties.setProperty(Configuration.COMMON_SERVICES_DIR_PATH,commonServicesRoot.getPath());
properties.setProperty(Configuration.SERVER_VERSION_FILE,version.getPath());
Configuration configuration=new Configuration(properties);
TestAmbariMetaInfo ambariMetaInfo=new TestAmbariMetaInfo(configuration);
ambariMetaInfo.replayAllMocks();
try {
ambariMetaInfo.init();
}
catch ( Exception e) {
LOG.info("Error in metainfo initializing ",e);
throw e;
}
waitForAllReposToBeResolved(ambariMetaInfo);
String[] metricsTypes={Resource.Type.Component.name(),Resource.Type.HostComponent.name()};
for ( StackInfo stackInfo : ambariMetaInfo.getStacks(STACK_NAME_HDP)) {
for ( ServiceInfo serviceInfo : stackInfo.getServices()) {
for ( ComponentInfo componentInfo : serviceInfo.getComponents()) {
for ( String metricType : metricsTypes) {
List list=ambariMetaInfo.getMetrics(stackInfo.getName(),stackInfo.getVersion(),serviceInfo.getName(),componentInfo.getName(),metricType);
String currentComponentInfo=stackInfo.getName() + "-" + stackInfo.getVersion()+ ", "+ serviceInfo.getName()+ ", "+ componentInfo.getName()+ ", "+ metricType;
if (list == null) {
LOG.info("No metrics found for " + currentComponentInfo);
continue;
}
LOG.info("Cross-checking JMX-to-Ganglia metrics for " + currentComponentInfo);
Map jmxMetrics=Collections.emptyMap();
for ( MetricDefinition metricDefinition : list) {
if ("jmx".equals(metricDefinition.getType())) {
jmxMetrics=metricDefinition.getMetrics();
for ( Metric metric : jmxMetrics.values()) {
Assert.assertTrue(metric.isPointInTime());
Assert.assertFalse(metric.isTemporal());
}
}
}
LinkedList failedMetrics=new LinkedList();
for ( MetricDefinition metricDefinition : list) {
if ("ganglia".equals(metricDefinition.getType())) {
for ( Map.Entry metricEntry : metricDefinition.getMetrics().entrySet()) {
Assert.assertTrue(metricEntry.getValue().isTemporal());
if (metricEntry.getValue().isPointInTime() && jmxMetrics.containsKey(metricEntry.getKey())) {
failedMetrics.add(metricEntry.getKey());
}
}
}
}
Assert.assertEquals(failedMetrics.toString() + " metrics defined with pointInTime=true for both jmx and ganglia types.",0,failedMetrics.size());
}
}
}
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAlertsJson() throws Exception {
ServiceInfo svc=metaInfo.getService(STACK_NAME_HDP,"2.0.5","HDFS");
Assert.assertNotNull(svc);
Assert.assertNotNull(svc.getAlertsFile());
svc=metaInfo.getService(STACK_NAME_HDP,"2.0.6","HDFS");
Assert.assertNotNull(svc);
Assert.assertNotNull(svc.getAlertsFile());
svc=metaInfo.getService(STACK_NAME_HDP,"1.3.4","HDFS");
Assert.assertNotNull(svc);
Assert.assertNull(svc.getAlertsFile());
Set set=metaInfo.getAlertDefinitions(STACK_NAME_HDP,"2.0.5","HDFS");
Assert.assertNotNull(set);
Assert.assertTrue(set.size() > 0);
AlertDefinition nameNodeProcess=null;
AlertDefinition nameNodeCpu=null;
AlertDefinition datanodeStorage=null;
AlertDefinition ignoreHost=null;
Iterator iterator=set.iterator();
while (iterator.hasNext()) {
AlertDefinition definition=iterator.next();
if (definition.getName().equals("namenode_process")) {
nameNodeProcess=definition;
}
if (definition.getName().equals("namenode_cpu")) {
nameNodeCpu=definition;
}
if (definition.getName().equals("datanode_storage")) {
datanodeStorage=definition;
}
if (definition.getName().equals("hdfs_ignore_host_test")) {
ignoreHost=definition;
}
}
assertNotNull(nameNodeProcess);
assertNotNull(nameNodeCpu);
assertNotNull(ignoreHost);
assertEquals("NameNode Host CPU Utilization",nameNodeCpu.getLabel());
assertFalse(nameNodeProcess.isHostIgnored());
assertEquals("A description of namenode_process",nameNodeProcess.getDescription());
Source source=nameNodeProcess.getSource();
assertNotNull(source);
assertNotNull(((PortSource)source).getPort());
Reporting reporting=source.getReporting();
assertNotNull(reporting);
assertNotNull(reporting.getOk());
assertNotNull(reporting.getOk().getText());
assertNull(reporting.getOk().getValue());
assertNotNull(reporting.getCritical());
assertNotNull(reporting.getCritical().getText());
assertNull(reporting.getCritical().getValue());
assertNull(reporting.getWarning());
assertFalse(nameNodeCpu.isHostIgnored());
assertEquals("A description of namenode_cpu",nameNodeCpu.getDescription());
source=nameNodeCpu.getSource();
assertNotNull(source);
reporting=source.getReporting();
assertNotNull(reporting);
assertNotNull(reporting.getOk());
assertNotNull(reporting.getOk().getText());
assertNull(reporting.getOk().getValue());
assertNotNull(reporting.getCritical());
assertNotNull(reporting.getCritical().getText());
assertNotNull(reporting.getCritical().getValue());
assertNotNull(reporting.getWarning());
assertNotNull(reporting.getWarning().getText());
assertNotNull(reporting.getWarning().getValue());
assertNotNull(datanodeStorage);
assertEquals("A description of datanode_storage",datanodeStorage.getDescription());
assertFalse(datanodeStorage.isHostIgnored());
MetricSource metricSource=(MetricSource)datanodeStorage.getSource();
assertNotNull(metricSource.getUri());
assertNotNull(metricSource.getUri().getHttpsProperty());
assertNotNull(metricSource.getUri().getHttpsPropertyValue());
assertNotNull(metricSource.getUri().getHttpsUri());
assertNotNull(metricSource.getUri().getHttpUri());
assertEquals(12345,metricSource.getUri().getDefaultPort());
assertTrue(ignoreHost.isHostIgnored());
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testLatestRepo() throws Exception {
StackManager sm=metaInfo.getStackManager();
int maxWait=45000;
int waitTime=0;
while (waitTime < maxWait && !sm.haveAllRepoUrlsBeenResolved()) {
Thread.sleep(5);
waitTime+=5;
}
if (waitTime >= maxWait) {
fail("Latest Repo tasks did not complete");
}
for ( RepositoryInfo ri : metaInfo.getRepositories("HDP","2.1.1","centos6")) {
Assert.assertEquals("Expected the base url to be set properly","http://s3.amazonaws.com/dev.hortonworks.com/HDP/centos6/2.x/BUILDS/2.1.1.0-118",ri.getLatestBaseUrl());
Assert.assertEquals("Expected the default URL to be the same as in the xml file","http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.0.6.0",ri.getDefaultBaseUrl());
}
for ( RepositoryInfo ri : metaInfo.getRepositories("HDP","2.1.1","suse11")) {
Assert.assertEquals("Expected hdp.json to be stripped from the url","http://s3.amazonaws.com/dev.hortonworks.com/HDP/suse11/2.x/BUILDS/2.1.1.0-118",ri.getLatestBaseUrl());
}
for ( RepositoryInfo ri : metaInfo.getRepositories("HDP","2.1.1","sles11")) {
Assert.assertEquals("http://s3.amazonaws.com/dev.hortonworks.com/HDP/suse11/2.x/BUILDS/2.1.1.0-118",ri.getLatestBaseUrl());
}
}
Class: org.apache.ambari.server.api.services.BaseRequestTest APIUtilityVerifier InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testProcess_noBody_ErrorStateResult() throws Exception {
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(null,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(true).anyTimes();
replay(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
Result processResult=request.process();
verify(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
assertSame(result,processResult);
assertNull(request.getQueryPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testProcess_QueryInURI() throws Exception {
HttpHeaders headers=createNiceMock(HttpHeaders.class);
String path=URLEncoder.encode("http://localhost.com:8080/api/v1/clusters/c1","UTF-8");
String query=URLEncoder.encode("foo=foo-value&bar=bar-value","UTF-8");
URI uri=new URI(path + "?" + query);
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
Predicate predicate=createNiceMock(Predicate.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(headers,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(body.getQueryString()).andReturn(null);
expect(compiler.compile("foo=foo-value&bar=bar-value")).andReturn(predicate);
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
Result processResult=request.process();
verify(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
assertSame(processResult,result);
assertSame(predicate,request.getQueryPredicate());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testProcess_WithBody_InvalidQuery() throws Exception {
UriInfo uriInfo=createMock(UriInfo.class);
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
RequestBody body=createNiceMock(RequestBody.class);
Exception exception=new InvalidQueryException("test");
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(null,body,uriInfo,compiler,null,null,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(body.getQueryString()).andReturn("blahblahblah");
expect(compiler.compile("blahblahblah")).andThrow(exception);
replay(compiler,uriInfo,queryParams,resource,resourceDefinition,body);
Result processResult=request.process();
verify(compiler,uriInfo,queryParams,resource,resourceDefinition,body);
assertEquals(400,processResult.getStatus().getStatusCode());
assertTrue(processResult.getStatus().isErrorState());
assertEquals("Unable to compile query predicate: test",processResult.getStatus().getMessage());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testProcess_withDirectives() throws Exception {
HttpHeaders headers=createNiceMock(HttpHeaders.class);
String path=URLEncoder.encode("http://localhost.com:8080/api/v1/clusters/c1","UTF-8");
String query=URLEncoder.encode("foo=foo-value&bar=bar-value","UTF-8");
URI uri=new URI(path + "?" + query);
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
Predicate predicate=createNiceMock(Predicate.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Set directives=new HashSet();
directives.add("my_directive");
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(headers,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getUpdateDirectives()).andReturn(directives).anyTimes();
expect(resourceDefinition.getCreateDirectives()).andReturn(directives).anyTimes();
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(body.getQueryString()).andReturn(null);
if (request.getRequestType().equals(Request.Type.POST) || request.getRequestType().equals(Request.Type.PUT)) {
expect(compiler.compile("foo=foo-value&bar=bar-value",directives)).andReturn(predicate);
}
else {
expect(compiler.compile("foo=foo-value&bar=bar-value")).andReturn(predicate);
}
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
Result processResult=request.process();
verify(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
assertSame(processResult,result);
assertSame(predicate,request.getQueryPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testProcess_QueryInBody() throws Exception {
HttpHeaders headers=createNiceMock(HttpHeaders.class);
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
Predicate predicate=createNiceMock(Predicate.class);
UriInfo uriInfo=createMock(UriInfo.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(headers,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(body.getQueryString()).andReturn("foo=bar");
expect(compiler.compile("foo=bar")).andReturn(predicate);
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
Result processResult=request.process();
verify(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
assertSame(processResult,result);
assertSame(predicate,request.getQueryPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testParseRenderer_formatSpecified() throws Exception {
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(null,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn("default");
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer("default")).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
request.process();
verify(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
assertSame(renderer,request.getRenderer());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testProcess_QueryInBodyAndURI() throws Exception {
HttpHeaders headers=createNiceMock(HttpHeaders.class);
String uriString="http://localhost.com:8080/api/v1/clusters/c1?bar=value";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
Predicate predicate=createNiceMock(Predicate.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(headers,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(body.getQueryString()).andReturn("foo=bar");
expect(compiler.compile("foo=bar")).andReturn(predicate);
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
Result processResult=request.process();
verify(headers,compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,predicate,body);
assertSame(processResult,result);
assertSame(predicate,request.getQueryPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testParseRenderer_minimalResponse() throws Exception {
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new MinimalRenderer();
Request request=getTestRequest(null,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn("true");
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getRenderer("minimal")).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
request.process();
verify(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
assertSame(renderer,request.getRenderer());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetFields() throws Exception {
String fields="prop,category/prop1,category2/category3/prop2[1,2,3],prop3[4,5,6],category4[7,8,9],sub-resource/*[10,11,12],finalProp";
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams);
expect(mapQueryParams.getFirst("fields")).andReturn(fields);
replay(uriInfo,mapQueryParams);
Request request=getTestRequest(null,null,uriInfo,null,null,null,null);
Map mapFields=request.getFields();
assertEquals(7,mapFields.size());
String prop="prop";
assertTrue(mapFields.containsKey(prop));
assertNull(mapFields.get(prop));
String prop1=PropertyHelper.getPropertyId("category","prop1");
assertTrue(mapFields.containsKey(prop1));
assertNull(mapFields.get(prop1));
String prop2=PropertyHelper.getPropertyId("category2/category3","prop2");
assertTrue(mapFields.containsKey(prop2));
assertEquals(new TemporalInfoImpl(1,2,3),mapFields.get(prop2));
String prop3="prop3";
assertTrue(mapFields.containsKey(prop3));
assertEquals(new TemporalInfoImpl(4,5,6),mapFields.get(prop3));
String category4="category4";
assertTrue(mapFields.containsKey(category4));
assertEquals(new TemporalInfoImpl(7,8,9),mapFields.get(category4));
String subResource=PropertyHelper.getPropertyId("sub-resource","*");
assertTrue(mapFields.containsKey(subResource));
assertEquals(new TemporalInfoImpl(10,11,12),mapFields.get(subResource));
String finalProp="finalProp";
assertTrue(mapFields.containsKey(finalProp));
assertNull(mapFields.get(finalProp));
verify(uriInfo,mapQueryParams);
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testProcess_WithBody() throws Exception {
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(null,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition);
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
expect(body.getQueryString()).andReturn(null);
replay(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
Result processResult=request.process();
verify(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
assertSame(result,processResult);
assertNull(request.getQueryPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testProcess_noBody() throws Exception {
String uriString="http://localhost.com:8080/api/v1/clusters/c1";
URI uri=new URI(URLEncoder.encode(uriString,"UTF-8"));
PredicateCompiler compiler=createStrictMock(PredicateCompiler.class);
UriInfo uriInfo=createMock(UriInfo.class);
@SuppressWarnings("unchecked") MultivaluedMap queryParams=createMock(MultivaluedMap.class);
RequestHandler handler=createStrictMock(RequestHandler.class);
Result result=createMock(Result.class);
ResultStatus resultStatus=createMock(ResultStatus.class);
ResultPostProcessor processor=createStrictMock(ResultPostProcessor.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
Renderer renderer=new DefaultRenderer();
Request request=getTestRequest(null,body,uriInfo,compiler,handler,processor,resource);
expect(uriInfo.getQueryParameters()).andReturn(queryParams).anyTimes();
expect(queryParams.getFirst(QueryLexer.QUERY_MINIMAL)).andReturn(null);
expect(queryParams.getFirst(QueryLexer.QUERY_FORMAT)).andReturn(null);
expect(resource.getResourceDefinition()).andReturn(resourceDefinition);
expect(resourceDefinition.getRenderer(null)).andReturn(renderer);
expect(uriInfo.getRequestUri()).andReturn(uri).anyTimes();
expect(handler.handleRequest(request)).andReturn(result);
expect(result.getStatus()).andReturn(resultStatus).anyTimes();
expect(resultStatus.isErrorState()).andReturn(false).anyTimes();
processor.process(result);
replay(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
Result processResult=request.process();
verify(compiler,uriInfo,handler,queryParams,resource,resourceDefinition,result,resultStatus,processor,body);
assertSame(result,processResult);
assertNull(request.getQueryPredicate());
}
Class: org.apache.ambari.server.api.services.ClusterStackVersionServiceTest InternalCallVerifier NullVerifier
@Test public void testGetRepositoryVersionService(){
ClusterStackVersionService clusterStackVersionService=new TestClusterStackVersionService("cluster");
RepositoryVersionService rvs=clusterStackVersionService.getRepositoryVersionService(EasyMock.createMock(javax.ws.rs.core.Request.class),"1");
TestCase.assertNotNull(rvs);
}
Class: org.apache.ambari.server.api.services.NamedPropertySetTest InternalCallVerifier EqualityVerifier
@Test public void testGetters(){
Map mapProps=new HashMap();
mapProps.put("foo","bar");
NamedPropertySet propertySet=new NamedPropertySet("foo",mapProps);
assertEquals("foo",propertySet.getName());
assertEquals(mapProps,propertySet.getProperties());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testEquals(){
Map mapProps=new HashMap();
mapProps.put("foo","bar");
NamedPropertySet propertySet=new NamedPropertySet("foo",mapProps);
NamedPropertySet propertySet2=new NamedPropertySet("foo",mapProps);
assertEquals(propertySet,propertySet2);
NamedPropertySet propertySet3=new NamedPropertySet("bar",mapProps);
assertFalse(propertySet.equals(propertySet3));
NamedPropertySet propertySet4=new NamedPropertySet("foo",new HashMap());
assertFalse(propertySet.equals(propertySet4));
}
Class: org.apache.ambari.server.api.services.PersistKeyValueImplTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStore() throws Exception {
PersistKeyValueImpl impl=injector.getInstance(PersistKeyValueImpl.class);
Map map=impl.getAllKeyValues();
assertEquals(0,map.size());
impl.put("key1","value1");
impl.put("key2","value2");
map=impl.getAllKeyValues();
assertEquals(2,map.size());
assertEquals("value1",impl.getValue("key1"));
assertEquals("value2",impl.getValue("key2"));
assertEquals(map.get("key1"),impl.getValue("key1"));
impl.put("key1","value1-2");
assertEquals("value1-2",impl.getValue("key1"));
assertEquals(2,map.size());
StringBuilder largeValueBuilder=new StringBuilder();
for (int i=0; i < 320; i++) {
largeValueBuilder.append("0123456789");
}
String largeValue=largeValueBuilder.toString();
impl.put("key3",largeValue);
assertEquals(largeValue,impl.getValue("key3"));
}
Class: org.apache.ambari.server.api.services.PersistServiceTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testPersist() throws UniformInterfaceException, JSONException, IOException {
ClientConfig clientConfig=new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
client=Client.create(clientConfig);
WebResource webResource=client.resource(String.format("http://localhost:%d/persist",getTestPort()));
webResource.post("{\"xyx\" : \"t\"}");
LOG.info("Done posting to the server");
String output=webResource.get(String.class);
LOG.info("All key values " + output);
Map jsonOutput=StageUtils.fromJson(output,Map.class);
String value=jsonOutput.get("xyx");
Assert.assertEquals("t",value);
webResource=client.resource(String.format("http://localhost:%d/persist/xyx",getTestPort()));
output=webResource.get(String.class);
Assert.assertEquals("t",output);
LOG.info("Value for xyx " + output);
}
Class: org.apache.ambari.server.api.services.RequestBodyTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetGetQueryString(){
RequestBody body=new RequestBody();
assertNull(body.getQueryString());
body.setQueryString("foo=bar");
assertEquals("foo=bar",body.getQueryString());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetGetPartialResponseFields(){
RequestBody body=new RequestBody();
assertNull(body.getPartialResponseFields());
body.setPartialResponseFields("foo,bar");
assertEquals("foo,bar",body.getPartialResponseFields());
}
InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testAddGetPropertySets(){
RequestBody body=new RequestBody();
assertEquals(0,body.getNamedPropertySets().size());
NamedPropertySet ps=new NamedPropertySet("foo",new HashMap());
body.addPropertySet(ps);
assertEquals(1,body.getNamedPropertySets().size());
assertSame(ps,body.getNamedPropertySets().iterator().next());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetGetBody(){
RequestBody body=new RequestBody();
assertNull(body.getBody());
body.setBody("{\"foo\" : \"value\" }");
assertEquals("{\"foo\" : \"value\" }",body.getBody());
}
Class: org.apache.ambari.server.api.services.RequestFactoryTest InternalCallVerifier EqualityVerifier
@Test public void testCreate_Post__NoQueryParams(){
HttpHeaders headers=createNiceMock(HttpHeaders.class);
UriInfo uriInfo=createNiceMock(UriInfo.class);
RequestBody body=createStrictMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams).anyTimes();
expect(mapQueryParams.entrySet()).andReturn(Collections.>>emptySet()).anyTimes();
expect(body.getQueryString()).andReturn(null);
replay(headers,uriInfo,body,resource,mapQueryParams);
RequestFactory factory=new RequestFactory();
Request request=factory.createRequest(headers,body,uriInfo,Request.Type.POST,resource);
assertEquals(resource,request.getResource());
assertEquals(body,request.getBody());
assertEquals(Request.Type.POST,request.getRequestType());
verify(headers,uriInfo,body,resource,mapQueryParams);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreate_Post__BodyQueryParams(){
HttpHeaders headers=createNiceMock(HttpHeaders.class);
UriInfo uriInfo=createNiceMock(UriInfo.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams).anyTimes();
expect(mapQueryParams.entrySet()).andReturn(Collections.>>emptySet()).anyTimes();
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getCreateDirectives()).andReturn(Collections.emptySet());
expect(body.getQueryString()).andReturn("foo=bar");
replay(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
RequestFactory factory=new RequestFactory();
Request request=factory.createRequest(headers,body,uriInfo,Request.Type.POST,resource);
assertEquals(resource,request.getResource());
assertEquals(body,request.getBody());
assertEquals(Request.Type.QUERY_POST,request.getRequestType());
verify(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreate_Post__WithBodyDirective(){
HttpHeaders headers=createNiceMock(HttpHeaders.class);
UriInfo uriInfo=createNiceMock(UriInfo.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
Map> mapProps=new HashMap>();
mapProps.put("foo",Collections.singletonList("bar"));
Map requestInfoMap=new HashMap();
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams).anyTimes();
expect(mapQueryParams.entrySet()).andReturn(Collections.>>emptySet()).anyTimes();
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getCreateDirectives()).andReturn(Collections.singleton("foo"));
expect(body.getQueryString()).andReturn("foo=bar");
expect(body.getRequestInfoProperties()).andReturn(requestInfoMap).anyTimes();
replay(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
RequestFactory factory=new RequestFactory();
Request request=factory.createRequest(headers,body,uriInfo,Request.Type.POST,resource);
assertEquals(resource,request.getResource());
assertEquals(body,request.getBody());
assertEquals(Request.Type.POST,request.getRequestType());
assertEquals("bar",requestInfoMap.get("foo"));
verify(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreate_Put__WithUriDirective(){
HttpHeaders headers=createNiceMock(HttpHeaders.class);
UriInfo uriInfo=createNiceMock(UriInfo.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
Map> mapProps=new HashMap>();
mapProps.put("foo",Collections.singletonList("bar"));
Map requestInfoMap=new HashMap();
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams).anyTimes();
expect(mapQueryParams.entrySet()).andReturn(mapProps.entrySet()).anyTimes();
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getUpdateDirectives()).andReturn(Collections.singleton("foo"));
expect(body.getQueryString()).andReturn(null);
expect(body.getRequestInfoProperties()).andReturn(requestInfoMap).anyTimes();
replay(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
RequestFactory factory=new RequestFactory();
Request request=factory.createRequest(headers,body,uriInfo,Request.Type.PUT,resource);
assertEquals(resource,request.getResource());
assertEquals(body,request.getBody());
assertEquals(Request.Type.PUT,request.getRequestType());
assertEquals("bar",requestInfoMap.get("foo"));
verify(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreate_Post__WithUriDirective(){
HttpHeaders headers=createNiceMock(HttpHeaders.class);
UriInfo uriInfo=createNiceMock(UriInfo.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
Map> mapProps=new HashMap>();
mapProps.put("foo",Collections.singletonList("bar"));
Map requestInfoMap=new HashMap();
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams).anyTimes();
expect(mapQueryParams.entrySet()).andReturn(mapProps.entrySet()).anyTimes();
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getCreateDirectives()).andReturn(Collections.singleton("foo"));
expect(body.getQueryString()).andReturn(null);
expect(body.getRequestInfoProperties()).andReturn(requestInfoMap).anyTimes();
replay(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
RequestFactory factory=new RequestFactory();
Request request=factory.createRequest(headers,body,uriInfo,Request.Type.POST,resource);
assertEquals(resource,request.getResource());
assertEquals(body,request.getBody());
assertEquals(Request.Type.POST,request.getRequestType());
assertEquals("bar",requestInfoMap.get("foo"));
verify(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreate_Post__UriQueryParams(){
HttpHeaders headers=createNiceMock(HttpHeaders.class);
UriInfo uriInfo=createNiceMock(UriInfo.class);
RequestBody body=createNiceMock(RequestBody.class);
ResourceInstance resource=createNiceMock(ResourceInstance.class);
ResourceDefinition resourceDefinition=createNiceMock(ResourceDefinition.class);
@SuppressWarnings("unchecked") MultivaluedMap mapQueryParams=createMock(MultivaluedMap.class);
Map> mapProps=new HashMap>();
mapProps.put("foo",Collections.singletonList("bar"));
expect(uriInfo.getQueryParameters()).andReturn(mapQueryParams).anyTimes();
expect(mapQueryParams.entrySet()).andReturn(mapProps.entrySet()).anyTimes();
expect(resource.getResourceDefinition()).andReturn(resourceDefinition).anyTimes();
expect(resourceDefinition.getCreateDirectives()).andReturn(Collections.emptySet());
expect(body.getQueryString()).andReturn(null);
replay(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
RequestFactory factory=new RequestFactory();
Request request=factory.createRequest(headers,body,uriInfo,Request.Type.POST,resource);
assertEquals(resource,request.getResource());
assertEquals(body,request.getBody());
assertEquals(Request.Type.QUERY_POST,request.getRequestType());
verify(headers,uriInfo,body,resource,mapQueryParams,resourceDefinition);
}
Class: org.apache.ambari.server.api.services.ViewExternalSubResourceServiceTest UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testAddResourceService() throws Exception {
Resource.Type type=new Resource.Type("resource");
ViewInstanceEntity definition=ViewInstanceEntityTest.getViewInstanceEntity();
ViewExternalSubResourceService service=new ViewExternalSubResourceService(type,definition);
Object fooService=new Object();
service.addResourceService("foo",fooService);
Assert.assertEquals(fooService,service.getResource("foo"));
try {
service.getResource("bar");
Assert.fail("Expected IllegalArgumentException for unknown service name.");
}
catch ( IllegalArgumentException e) {
}
}
Class: org.apache.ambari.server.api.services.ViewSubResourceServiceTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResultSerializer_Json() throws Exception {
UriInfo uriInfo=createMock(UriInfo.class);
Resource resource=createMock(Resource.class);
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
TreeNode child=tree.addChild(resource,"resource1");
child.setProperty("href","this is an href");
HashMap mapRootProps=new HashMap();
mapRootProps.put("prop1","value1");
mapRootProps.put("prop2","value2");
HashMap mapCategoryProps=new HashMap();
mapCategoryProps.put("catProp1","catValue1");
mapCategoryProps.put("catProp2","catValue2");
Map> propertyMap=new HashMap>();
propertyMap.put(null,mapRootProps);
propertyMap.put("category",mapCategoryProps);
expect(resource.getPropertiesMap()).andReturn(propertyMap).anyTimes();
expect(resource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(uriInfo,resource);
ViewInstanceEntity viewInstanceEntity=ViewInstanceEntityTest.getViewInstanceEntity();
Resource.Type type=new Resource.Type("subResource");
ViewSubResourceService service=new ViewSubResourceService(type,viewInstanceEntity);
ResultSerializer serializer=service.getResultSerializer(MediaType.APPLICATION_JSON_TYPE);
Object o=serializer.serialize(result);
assertTrue(o instanceof Map);
Map map=(Map)o;
assertEquals(4,map.size());
assertEquals("value1",map.get("prop1"));
assertEquals("value2",map.get("prop2"));
assertEquals("this is an href",map.get("href"));
Object o2=map.get("category");
assertNotNull(o2);
assertTrue(o2 instanceof Map);
Map subMap=(Map)o2;
assertEquals(2,subMap.size());
assertEquals("catValue1",subMap.get("catProp1"));
assertEquals("catValue2",subMap.get("catProp2"));
verify(uriInfo,resource);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResultSerializer_Text() throws Exception {
UriInfo uriInfo=createMock(UriInfo.class);
Resource resource=createMock(Resource.class);
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
TreeNode child=tree.addChild(resource,"resource1");
child.setProperty("href","this is an href");
Map mapRootProps=new LinkedHashMap();
mapRootProps.put("prop2","value2");
mapRootProps.put("prop1","value1");
Map mapCategoryProps=new LinkedHashMap();
mapCategoryProps.put("catProp1","catValue1");
mapCategoryProps.put("catProp2","catValue2");
Map> propertyMap=new LinkedHashMap<>();
propertyMap.put(null,mapRootProps);
propertyMap.put("category",mapCategoryProps);
expect(resource.getPropertiesMap()).andReturn(propertyMap).anyTimes();
expect(resource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(uriInfo,resource);
ViewInstanceEntity viewInstanceEntity=ViewInstanceEntityTest.getViewInstanceEntity();
Resource.Type type=new Resource.Type("subResource");
ViewSubResourceService service=new ViewSubResourceService(type,viewInstanceEntity);
ResultSerializer serializer=service.getResultSerializer(MediaType.TEXT_PLAIN_TYPE);
Object o=serializer.serialize(result);
String expected="{\n" + " \"href\" : \"this is an href\",\n" + " \"prop2\" : \"value2\",\n"+ " \"prop1\" : \"value1\",\n"+ " \"category\" : {\n"+ " \"catProp1\" : \"catValue1\",\n"+ " \"catProp2\" : \"catValue2\"\n"+ " }\n"+ "}";
assertEquals(expected,o.toString().replace("\r",""));
verify(uriInfo,resource);
}
Class: org.apache.ambari.server.api.services.parsers.JsonRequestBodyParserTest InternalCallVerifier EqualityVerifier
@Test public void testParse() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(serviceJson).iterator().next();
Set setProps=body.getNamedPropertySets();
assertEquals(1,setProps.size());
Map mapExpected=new HashMap();
mapExpected.put(PropertyHelper.getPropertyId("Services","service_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("Services","display_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","cluster_name"),"tbmetrictest");
mapExpected.put(PropertyHelper.getPropertyId("Services","description"),"Apache Hadoop Distributed File System");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","state"),"STARTED");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory","propName"),"100");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory/nested1/nested2","innerPropName"),"innerPropValue");
mapExpected.put(PropertyHelper.getPropertyId(null,"topLevelProp"),"value");
assertEquals(mapExpected,setProps.iterator().next().getProperties());
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(mapExpected,setProps2.iterator().next().getProperties());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testParse_EmptyBody() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse("").iterator().next();
assertNotNull(body.getNamedPropertySets());
assertEquals(0,body.getNamedPropertySets().size());
assertNull(body.getQueryString());
assertNull(body.getPartialResponseFields());
assertNull(body.getBody());
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testParse_QueryPost() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(queryPostJson).iterator().next();
Set setProperties=body.getNamedPropertySets();
assertEquals(1,setProperties.size());
boolean contains1=false;
boolean contains2=false;
boolean contains3=false;
for ( NamedPropertySet ps : setProperties) {
Map mapProps=ps.getProperties();
assertEquals(1,mapProps.size());
Set> set=(Set>)mapProps.get("services");
for ( Map map : set) {
String serviceName=(String)map.get("ServiceInfo/service_name");
if (serviceName.equals("unitTestService1")) {
assertEquals(1,map.size());
contains1=true;
}
else if (serviceName.equals("unitTestService2")) {
assertEquals("prop1Value",map.get("ServiceInfo/property1"));
assertEquals(2,map.size());
contains2=true;
}
else if (serviceName.equals("unitTestService3")) {
assertEquals("prop2Value",map.get("ServiceInfo/Category/property2"));
assertEquals(2,map.size());
contains3=true;
}
else {
fail("Unexpected service name");
}
}
}
assertTrue(contains1);
assertTrue(contains2);
assertTrue(contains3);
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(1,setProps2.size());
assertEquals(setProperties,setProps2);
assertEquals("java.util.LinkedHashSet",body.getNamedPropertySets().iterator().next().getProperties().get("services").getClass().getName());
}
InternalCallVerifier EqualityVerifier
@Test public void testParse_QueryInBody() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(serviceJsonWithQuery).iterator().next();
Set setProps=body.getNamedPropertySets();
assertEquals(1,setProps.size());
Map mapExpected=new HashMap();
mapExpected.put(PropertyHelper.getPropertyId("Services","service_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("Services","display_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","cluster_name"),"tbmetrictest");
mapExpected.put(PropertyHelper.getPropertyId("Services","description"),"Apache Hadoop Distributed File System");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","state"),"STARTED");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory","propName"),"100");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory/nested1/nested2","innerPropName"),"innerPropValue");
mapExpected.put(PropertyHelper.getPropertyId(null,"topLevelProp"),"value");
assertEquals(mapExpected,setProps.iterator().next().getProperties());
assertEquals("foo=bar",body.getQueryString());
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(mapExpected,setProps2.iterator().next().getProperties());
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testParse___QueryPost_QueryInBody() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(queryPostJsonWithQuery).iterator().next();
Set setProperties=body.getNamedPropertySets();
assertEquals("foo=bar",body.getQueryString());
assertEquals(1,setProperties.size());
boolean contains1=false;
boolean contains2=false;
boolean contains3=false;
for ( NamedPropertySet ps : setProperties) {
assertEquals("",ps.getName());
Map mapProps=ps.getProperties();
for ( Map.Entry entry : mapProps.entrySet()) {
Set> set=(Set>)entry.getValue();
for ( Map map : set) {
String serviceName=(String)map.get("ServiceInfo/service_name");
if (serviceName.equals("unitTestService1")) {
assertEquals(1,map.size());
contains1=true;
}
else if (serviceName.equals("unitTestService2")) {
assertEquals("prop1Value",map.get("ServiceInfo/property1"));
assertEquals(2,map.size());
contains2=true;
}
else if (serviceName.equals("unitTestService3")) {
assertEquals("prop2Value",map.get("ServiceInfo/Category/property2"));
assertEquals(2,map.size());
contains3=true;
}
else {
fail("Unexpected service name");
}
}
}
}
assertTrue(contains1);
assertTrue(contains2);
assertTrue(contains3);
String b=body.getBody();
assertEquals(queryPostJsonWithQuery,b);
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(1,setProps2.size());
assertEquals(setProperties,setProps2);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testParse_NullBody() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(null).iterator().next();
assertNotNull(body.getNamedPropertySets());
assertEquals(0,body.getNamedPropertySets().size());
assertNull(body.getQueryString());
assertNull(body.getPartialResponseFields());
assertNull(body.getBody());
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testParse___QueryPost_multipleSubResTypes() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(queryPostMultipleSubResourcesJson).iterator().next();
Set setProperties=body.getNamedPropertySets();
assertEquals(1,setProperties.size());
boolean contains1=false;
boolean contains2=false;
for ( NamedPropertySet ps : setProperties) {
Map mapProps=ps.getProperties();
for ( Map.Entry entry : mapProps.entrySet()) {
Set> set=(Set>)entry.getValue();
for ( Map map : set) {
String serviceName=(String)map.get("ServiceInfo/service_name");
if (serviceName.equals("unitTestService1")) {
assertEquals("foo",entry.getKey());
assertEquals(1,map.size());
contains1=true;
}
else if (serviceName.equals("unitTestService2")) {
assertEquals("bar",entry.getKey());
assertEquals("prop2Value",map.get("ServiceInfo/Category/property2"));
assertEquals(2,map.size());
contains2=true;
}
else {
fail("Unexpected service name");
}
}
}
}
assertTrue(contains1);
assertTrue(contains2);
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(1,setProps2.size());
assertEquals(setProperties,setProps2);
}
InternalCallVerifier EqualityVerifier
@Test public void testParse_QueryOnlyInBody() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(bodyQueryOnly).iterator().next();
assertEquals("foo=bar",body.getQueryString());
assertEquals(bodyQueryOnly,body.getBody());
}
InternalCallVerifier EqualityVerifier
@Test public void testRequestInfoProps() throws Exception {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(bodyWithRequestInfoProperties).iterator().next();
Set setProps=body.getNamedPropertySets();
assertEquals(1,setProps.size());
Map mapExpected=new HashMap();
mapExpected.put(PropertyHelper.getPropertyId("Services","service_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("Services","display_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","cluster_name"),"tbmetrictest");
mapExpected.put(PropertyHelper.getPropertyId("Services","description"),"Apache Hadoop Distributed File System");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","state"),"STARTED");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory","propName"),"100");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory/nested1/nested2","innerPropName"),"innerPropValue");
mapExpected.put(PropertyHelper.getPropertyId(null,"topLevelProp"),"value");
assertEquals(mapExpected,setProps.iterator().next().getProperties());
assertEquals("foo=bar",body.getQueryString());
Map mapRequestInfoProps=body.getRequestInfoProperties();
assertEquals(4,mapRequestInfoProps.size());
assertEquals("val1",mapRequestInfoProps.get("prop1"));
assertEquals("val2",mapRequestInfoProps.get("prop2"));
assertEquals("foo=bar",mapRequestInfoProps.get("query"));
assertEquals(bodyWithRequestInfoProperties,mapRequestInfoProps.get("RAW_REQUEST_BODY"));
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(mapExpected,setProps2.iterator().next().getProperties());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testParse_Array() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(arrayJson).iterator().next();
Set setProps=body.getNamedPropertySets();
assertEquals(3,setProps.size());
boolean cluster1Matches=false;
boolean cluster2Matches=false;
boolean cluster3Matches=false;
Map mapCluster1=new HashMap();
mapCluster1.put(PropertyHelper.getPropertyId("Clusters","cluster_name"),"unitTestCluster1");
Map mapCluster2=new HashMap();
mapCluster2.put(PropertyHelper.getPropertyId("Clusters","cluster_name"),"unitTestCluster2");
mapCluster2.put(PropertyHelper.getPropertyId("Clusters","property1"),"prop1Value");
Map mapCluster3=new HashMap();
mapCluster3.put(PropertyHelper.getPropertyId("Clusters","cluster_name"),"unitTestCluster3");
mapCluster3.put(PropertyHelper.getPropertyId("Clusters/Category","property2"),null);
for ( NamedPropertySet propertySet : setProps) {
assertEquals("",propertySet.getName());
Map mapProps=propertySet.getProperties();
if (mapProps.equals(mapCluster1)) {
cluster1Matches=true;
}
else if (mapProps.equals(mapCluster2)) {
cluster2Matches=true;
}
else if (mapProps.equals(mapCluster3)) {
cluster3Matches=true;
}
}
assertTrue(cluster1Matches);
assertTrue(cluster2Matches);
assertTrue(cluster3Matches);
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(3,setProps2.size());
assertEquals(setProps,setProps2);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testParse___Array_NoArrayBrackets() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(arrayJson2).iterator().next();
Set setProps=body.getNamedPropertySets();
assertEquals(3,setProps.size());
boolean cluster1Matches=false;
boolean cluster2Matches=false;
boolean cluster3Matches=false;
Map mapCluster1=new HashMap();
mapCluster1.put(PropertyHelper.getPropertyId("Clusters","cluster_name"),"unitTestCluster1");
Map mapCluster2=new HashMap();
mapCluster2.put(PropertyHelper.getPropertyId("Clusters","cluster_name"),"unitTestCluster2");
mapCluster2.put(PropertyHelper.getPropertyId("Clusters","property1"),"prop1Value");
Map mapCluster3=new HashMap();
mapCluster3.put(PropertyHelper.getPropertyId("Clusters","cluster_name"),"unitTestCluster3");
mapCluster3.put(PropertyHelper.getPropertyId("Clusters/Category","property2"),"prop2Value");
for ( NamedPropertySet propertySet : setProps) {
Map mapProps=propertySet.getProperties();
if (mapProps.equals(mapCluster1)) {
cluster1Matches=true;
}
else if (mapProps.equals(mapCluster2)) {
cluster2Matches=true;
}
else if (mapProps.equals(mapCluster3)) {
cluster3Matches=true;
}
}
assertTrue(cluster1Matches);
assertTrue(cluster2Matches);
assertTrue(cluster3Matches);
String b=body.getBody();
body=parser.parse(b).iterator().next();
Set setProps2=body.getNamedPropertySets();
assertEquals(3,setProps2.size());
assertEquals(setProps,setProps2);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParse_MultiBody() throws BodyParseException {
RequestBodyParser parser=new JsonRequestBodyParser();
Set bodySet=parser.parse(multiBody);
assertEquals(2,bodySet.size());
for ( RequestBody body : bodySet) {
Set setProps=body.getNamedPropertySets();
assertEquals(1,setProps.size());
Map mapProps=setProps.iterator().next().getProperties();
assertEquals(4,mapProps.size());
assertEquals("global",mapProps.get("Hosts/desired_config/type"));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRequestBlobProperties() throws Exception {
RequestBodyParser parser=new JsonRequestBodyParser();
RequestBody body=parser.parse(bodyWithRequestBlobProperties).iterator().next();
Set setProps=body.getNamedPropertySets();
assertEquals(1,setProps.size());
String requestBlob=null;
for ( NamedPropertySet ps : setProps) {
assertEquals("",ps.getName());
Map mapProps=ps.getProperties();
for ( Map.Entry entry : mapProps.entrySet()) {
if (entry.getKey().equals(JsonRequestBodyParser.REQUEST_BLOB_TITLE)) {
requestBlob=(String)entry.getValue();
}
}
}
Assert.assertNotNull(requestBlob);
body=parser.parse(requestBlob).iterator().next();
Map mapExpected=new HashMap();
mapExpected.put(PropertyHelper.getPropertyId("Services","service_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("Services","display_name"),"HDFS");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","cluster_name"),"tbmetrictest");
mapExpected.put(PropertyHelper.getPropertyId("Services","description"),"Apache Hadoop Distributed File System");
mapExpected.put(PropertyHelper.getPropertyId("ServiceInfo","state"),"STARTED");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory","propName"),"100");
mapExpected.put(PropertyHelper.getPropertyId("OuterCategory/nested1/nested2","innerPropName"),"innerPropValue");
mapExpected.put(PropertyHelper.getPropertyId(null,"topLevelProp"),"value");
Set setProps2=body.getNamedPropertySets();
assertEquals(mapExpected,setProps2.iterator().next().getProperties());
}
Class: org.apache.ambari.server.api.services.serializers.CsvSerializerTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSerializeResources_NoColumnInfo() throws Exception {
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
List> data=new ArrayList>(){
{
add(new TreeMap(){
{
put("property1","value1a");
put("property2","value2a");
put("property3","value3a");
put("property4","value4a");
}
}
);
add(new TreeMap(){
{
put("property1","value1'b");
put("property2","value2'b");
put("property3","value3'b");
put("property4","value4'b");
}
}
);
add(new TreeMap(){
{
put("property1","value1,c");
put("property2","value2,c");
put("property3","value3,c");
put("property4","value4,c");
}
}
);
}
}
;
tree.setName("items");
tree.setProperty("isCollection","true");
addChildResource(tree,"resource",0,data.get(0));
addChildResource(tree,"resource",1,data.get(1));
addChildResource(tree,"resource",2,data.get(2));
replayAll();
Object o=new CsvSerializer().serialize(result).toString().replace("\r","");
verifyAll();
assertNotNull(o);
StringReader reader=new StringReader(o.toString());
CSVParser csvParser=new CSVParser(reader,CSVFormat.DEFAULT);
List records=csvParser.getRecords();
assertNotNull(records);
assertEquals(3,records.size());
int i=0;
for ( CSVRecord record : records) {
TreeMap actualData=data.get(i++);
assertEquals(actualData.size(),record.size());
for ( String item : record) {
assertTrue(actualData.containsValue(item));
}
}
csvParser.close();
}
InternalCallVerifier EqualityVerifier
@Test public void testSerializeResources_HeaderOrderInfo() throws Exception {
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
tree.setName("items");
tree.setProperty("isCollection","true");
tree.setProperty(CsvSerializer.PROPERTY_COLUMN_MAP,new HashMap(){
{
put("property1","Property 1");
put("property2","Property 2");
put("property3","Property 3");
put("property4","Property 4");
}
}
);
tree.setProperty(CsvSerializer.PROPERTY_COLUMN_ORDER,Arrays.asList("property1","property2","property3","property4"));
addChildResource(tree,"resource",0,new HashMap(){
{
put("property1","value1a");
put("property2","value2a");
put("property3","value3a");
put("property4","value4a");
}
}
);
addChildResource(tree,"resource",1,new HashMap(){
{
put("property1","value1'b");
put("property2","value2'b");
put("property3","value3'b");
put("property4","value4'b");
}
}
);
addChildResource(tree,"resource",2,new HashMap(){
{
put("property1","value1,c");
put("property2","value2,c");
put("property3","value3,c");
put("property4","value4,c");
}
}
);
replayAll();
Object o=new CsvSerializer().serialize(result).toString().replace("\r","");
String expected="Property 1,Property 2,Property 3,Property 4\n" + "value1a,value2a,value3a,value4a\n" + "value1'b,value2'b,value3'b,value4'b\n"+ "\"value1,c\",\"value2,c\",\"value3,c\",\"value4,c\"\n";
assertEquals(expected,o);
verifyAll();
}
InternalCallVerifier EqualityVerifier
@Test public void testSerializeResources_HeaderInfo() throws Exception {
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
tree.setName("items");
tree.setProperty("isCollection","true");
tree.setProperty(CsvSerializer.PROPERTY_COLUMN_MAP,new TreeMap(){
{
put("propertyD","Property D");
put("propertyC","Property C");
put("propertyB","Property B");
put("propertyA","Property A");
}
}
);
List> data=new ArrayList>(){
{
add(new HashMap(){
{
put("propertyD","value1a");
put("propertyC","value2a");
put("propertyB","value3a");
put("propertyA","value4a");
}
}
);
add(new HashMap(){
{
put("propertyD","value1'b");
put("propertyC","value2'b");
put("propertyB","value3'b");
put("propertyA","value4'b");
}
}
);
add(new HashMap(){
{
put("propertyD","value1,c");
put("propertyC","value2,c");
put("propertyB","value3,c");
put("propertyA","value4,c");
}
}
);
}
}
;
addChildResource(tree,"resource",0,data.get(0));
addChildResource(tree,"resource",1,data.get(1));
addChildResource(tree,"resource",2,data.get(2));
replayAll();
Object o=new CsvSerializer().serialize(result).toString().replace("\r","");
verifyAll();
String expected="Property A,Property B,Property C,Property D\n" + "value4a,value3a,value2a,value1a\n" + "value4'b,value3'b,value2'b,value1'b\n"+ "\"value4,c\",\"value3,c\",\"value2,c\",\"value1,c\"\n";
assertEquals(expected,o);
}
Class: org.apache.ambari.server.api.services.serializers.JsonSerializerTest InternalCallVerifier EqualityVerifier
@Test public void testSerialize() throws Exception {
UriInfo uriInfo=createMock(UriInfo.class);
Resource resource=createMock(Resource.class);
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
TreeNode child=tree.addChild(resource,"resource1");
child.setProperty("href","this is an href");
Map mapRootProps=new LinkedHashMap<>();
mapRootProps.put("prop2","value2");
mapRootProps.put("prop1","value1");
Map mapCategoryProps=new LinkedHashMap();
mapCategoryProps.put("catProp1","catValue1");
mapCategoryProps.put("catProp2","catValue2");
Map> propertyMap=new LinkedHashMap>();
propertyMap.put(null,mapRootProps);
propertyMap.put("category",mapCategoryProps);
expect(resource.getPropertiesMap()).andReturn(propertyMap).anyTimes();
expect(resource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(uriInfo,resource);
Object o=new JsonSerializer().serialize(result).toString().replace("\r","");
String expected="{\n" + " \"href\" : \"this is an href\",\n" + " \"prop2\" : \"value2\",\n"+ " \"prop1\" : \"value1\",\n"+ " \"category\" : {\n"+ " \"catProp1\" : \"catValue1\",\n"+ " \"catProp2\" : \"catValue2\"\n"+ " }\n"+ "}";
assertEquals(expected,o);
verify(uriInfo,resource);
}
InternalCallVerifier EqualityVerifier
@Test public void testSerializeResourcesAsArray() throws Exception {
UriInfo uriInfo=createMock(UriInfo.class);
Resource resource=createMock(Resource.class);
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
TreeNode child=tree.addChild(resource,"resource1");
child.setProperty("href","this is an href");
tree.addChild(resource,"resource2");
Map mapRootProps=new LinkedHashMap();
mapRootProps.put("prop2","value2");
mapRootProps.put("prop1","value1");
Map mapCategoryProps=new LinkedHashMap();
mapCategoryProps.put("catProp1","catValue1");
mapCategoryProps.put("catProp2","catValue2");
Map> propertyMap=new LinkedHashMap>();
propertyMap.put(null,mapRootProps);
propertyMap.put("category",mapCategoryProps);
expect(resource.getPropertiesMap()).andReturn(propertyMap).anyTimes();
expect(resource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(uriInfo,resource);
Object o=new JsonSerializer().serialize(result).toString().replace("\r","");
String expected="[\n" + " {\n" + " \"href\" : \"this is an href\",\n"+ " \"prop2\" : \"value2\",\n"+ " \"prop1\" : \"value1\",\n"+ " \"category\" : {\n"+ " \"catProp1\" : \"catValue1\",\n"+ " \"catProp2\" : \"catValue2\"\n"+ " }\n"+ " },\n"+ " {\n"+ " \"prop2\" : \"value2\",\n"+ " \"prop1\" : \"value1\",\n"+ " \"category\" : {\n"+ " \"catProp1\" : \"catValue1\",\n"+ " \"catProp2\" : \"catValue2\"\n"+ " }\n"+ " }\n"+ "]";
assertEquals(expected,o);
verify(uriInfo,resource);
}
InternalCallVerifier EqualityVerifier
@Test public void testSerializeResources() throws Exception {
UriInfo uriInfo=createMock(UriInfo.class);
Resource resource=createMock(Resource.class);
Result result=new ResultImpl(true);
result.setResultStatus(new ResultStatus(ResultStatus.STATUS.OK));
TreeNode tree=result.getResultTree();
TreeNode resourcesNode=tree.addChild(null,"resources");
resourcesNode.addChild(resource,"resource1");
Map mapRootProps=new LinkedHashMap();
mapRootProps.put("prop2","value2");
mapRootProps.put("prop1","value1");
Map mapCategoryProps=new LinkedHashMap();
mapCategoryProps.put("catProp1","catValue1");
mapCategoryProps.put("catProp2","catValue2");
Map> propertyMap=new LinkedHashMap>();
propertyMap.put(null,mapRootProps);
propertyMap.put("category",mapCategoryProps);
expect(resource.getPropertiesMap()).andReturn(propertyMap).anyTimes();
expect(resource.getType()).andReturn(Resource.Type.Cluster).anyTimes();
replay(uriInfo,resource);
Object o=new JsonSerializer().serialize(result).toString().replace("\r","");
String expected="{\n" + " \"resources\" : [\n" + " {\n"+ " \"prop2\" : \"value2\",\n"+ " \"prop1\" : \"value1\",\n"+ " \"category\" : {\n"+ " \"catProp1\" : \"catValue1\",\n"+ " \"catProp2\" : \"catValue2\"\n"+ " }\n"+ " }\n"+ " ]\n"+ "}";
assertEquals(expected,o);
verify(uriInfo,resource);
}
Class: org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelperTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testValidate_returnsCommandResult() throws StackAdvisorException, IOException {
Configuration configuration=mock(Configuration.class);
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
StackAdvisorHelper helper=spy(new StackAdvisorHelper(configuration,saRunner,metaInfo));
StackAdvisorCommand command=mock(StackAdvisorCommand.class);
ValidationResponse expected=mock(ValidationResponse.class);
StackAdvisorRequestType requestType=StackAdvisorRequestType.HOST_GROUPS;
StackAdvisorRequest request=StackAdvisorRequestBuilder.forStack("stackName","stackVersion").ofType(requestType).build();
when(command.invoke(request)).thenReturn(expected);
doReturn(command).when(helper).createValidationCommand(requestType);
ValidationResponse response=helper.validate(request);
assertEquals(expected,response);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("unchecked") public void testRecommend_returnsCommandResult() throws StackAdvisorException, IOException {
Configuration configuration=mock(Configuration.class);
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
StackAdvisorHelper helper=spy(new StackAdvisorHelper(configuration,saRunner,metaInfo));
StackAdvisorCommand command=mock(StackAdvisorCommand.class);
RecommendationResponse expected=mock(RecommendationResponse.class);
StackAdvisorRequestType requestType=StackAdvisorRequestType.HOST_GROUPS;
StackAdvisorRequest request=StackAdvisorRequestBuilder.forStack("stackName","stackVersion").ofType(requestType).build();
when(command.invoke(request)).thenReturn(expected);
doReturn(command).when(helper).createRecommendationCommand(requestType);
RecommendationResponse response=helper.recommend(request);
assertEquals(expected,response);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateRecommendationDependencyCommand_returnsConfigurationDependencyRecommendationCommand() throws IOException, StackAdvisorException {
Configuration configuration=mock(Configuration.class);
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
StackAdvisorHelper helper=new StackAdvisorHelper(configuration,saRunner,metaInfo);
StackAdvisorRequestType requestType=StackAdvisorRequestType.CONFIGURATION_DEPENDENCIES;
StackAdvisorCommand command=helper.createRecommendationCommand(requestType);
assertEquals(ConfigurationDependenciesRecommendationCommand.class,command.getClass());
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateValidationCommand_returnsConfigurationValidationCommand() throws IOException, StackAdvisorException {
Configuration configuration=mock(Configuration.class);
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
StackAdvisorHelper helper=new StackAdvisorHelper(configuration,saRunner,metaInfo);
StackAdvisorRequestType requestType=StackAdvisorRequestType.CONFIGURATIONS;
StackAdvisorCommand command=helper.createValidationCommand(requestType);
assertEquals(ConfigurationValidationCommand.class,command.getClass());
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateValidationCommand_returnsComponentLayoutValidationCommand() throws IOException, StackAdvisorException {
Configuration configuration=mock(Configuration.class);
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
StackAdvisorHelper helper=new StackAdvisorHelper(configuration,saRunner,metaInfo);
StackAdvisorRequestType requestType=StackAdvisorRequestType.HOST_GROUPS;
StackAdvisorCommand command=helper.createValidationCommand(requestType);
assertEquals(ComponentLayoutValidationCommand.class,command.getClass());
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateRecommendationCommand_returnsComponentLayoutRecommendationCommand() throws IOException, StackAdvisorException {
Configuration configuration=mock(Configuration.class);
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
StackAdvisorHelper helper=new StackAdvisorHelper(configuration,saRunner,metaInfo);
StackAdvisorRequestType requestType=StackAdvisorRequestType.HOST_GROUPS;
StackAdvisorCommand command=helper.createRecommendationCommand(requestType);
assertEquals(ComponentLayoutRecommendationCommand.class,command.getClass());
}
Class: org.apache.ambari.server.api.services.stackadvisor.commands.ConfigurationRecommendationCommandTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testProcessHostGroups() throws Exception {
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
File file=mock(File.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
ConfigurationRecommendationCommand command=new ConfigurationRecommendationCommand(file,"script",1,saRunner,metaInfo);
StackAdvisorRequest request=mock(StackAdvisorRequest.class);
Map> componentHostGroupMap=new HashMap>();
Set components1=new HashSet();
components1.add("component1");
components1.add("component4");
components1.add("component5");
componentHostGroupMap.put("group1",components1);
Set components2=new HashSet();
components2.add("component2");
components2.add("component3");
componentHostGroupMap.put("group2",components2);
doReturn(componentHostGroupMap).when(request).getHostComponents();
Set hostGroups=command.processHostGroups(request);
assertNotNull(hostGroups);
assertEquals(2,hostGroups.size());
Map hostGroupMap=new HashMap();
for ( RecommendationResponse.HostGroup hostGroup : hostGroups) {
hostGroupMap.put(hostGroup.getName(),hostGroup);
}
RecommendationResponse.HostGroup hostGroup1=hostGroupMap.get("group1");
assertNotNull(hostGroup1);
Set> host1Components=hostGroup1.getComponents();
assertNotNull(host1Components);
assertEquals(3,host1Components.size());
Set componentNames1=new HashSet();
for ( Map host1Component : host1Components) {
assertNotNull(host1Component);
assertEquals(1,host1Component.size());
String componentName=host1Component.get("name");
assertNotNull(componentName);
componentNames1.add(componentName);
}
assertEquals(3,componentNames1.size());
assertTrue(componentNames1.contains("component1"));
assertTrue(componentNames1.contains("component4"));
assertTrue(componentNames1.contains("component5"));
RecommendationResponse.HostGroup hostGroup2=hostGroupMap.get("group2");
assertNotNull(hostGroup2);
Set> host2Components=hostGroup2.getComponents();
assertNotNull(host2Components);
assertEquals(2,host2Components.size());
Set componentNames2=new HashSet();
for ( Map host2Component : host2Components) {
assertNotNull(host2Component);
assertEquals(1,host2Component.size());
String componentName=host2Component.get("name");
assertNotNull(componentName);
componentNames2.add(componentName);
}
assertEquals(2,componentNames2.size());
assertTrue(componentNames2.contains("component2"));
assertTrue(componentNames2.contains("component3"));
}
Class: org.apache.ambari.server.api.services.stackadvisor.commands.StackAdvisorCommandTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testInvoke_success() throws StackAdvisorException {
String expected="success";
final String testResourceString=String.format("{\"type\": \"%s\"}",expected);
final File recommendationsDir=temp.newFolder("recommendationDir");
String stackAdvisorScript="echo";
final int requestId=2;
StackAdvisorRunner saRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo metaInfo=mock(AmbariMetaInfo.class);
doReturn(Collections.emptyList()).when(metaInfo).getStackParentVersions(anyString(),anyString());
final StackAdvisorCommand command=spy(new TestStackAdvisorCommand(recommendationsDir,stackAdvisorScript,requestId,saRunner,metaInfo));
StackAdvisorRequest request=StackAdvisorRequestBuilder.forStack("stackName","stackVersion").build();
String hostsJSON="{\"hosts\" : \"localhost\"";
String servicesJSON="{\"services\" : \"HDFS\"";
StackAdvisorData data=new StackAdvisorData(hostsJSON,servicesJSON);
doReturn(hostsJSON).when(command).getHostsInformation(request);
doReturn(servicesJSON).when(command).getServicesInformation(request);
doReturn(data).when(command).adjust(any(StackAdvisorData.class),any(StackAdvisorRequest.class));
doAnswer(new Answer(){
public Object answer( InvocationOnMock invocation) throws Throwable {
String resultFilePath=String.format("%s/%s",requestId,command.getResultFileName());
File resultFile=new File(recommendationsDir,resultFilePath);
resultFile.getParentFile().mkdirs();
FileUtils.writeStringToFile(resultFile,testResourceString);
return null;
}
}
).when(saRunner).runScript(any(String.class),any(StackAdvisorCommandType.class),any(File.class));
TestResource result=command.invoke(request);
assertEquals(expected,result.getType());
assertEquals(requestId,result.getId());
}
InternalCallVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testPopulateStackHierarchy() throws Exception {
File file=mock(File.class);
StackAdvisorRunner stackAdvisorRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo ambariMetaInfo=mock(AmbariMetaInfo.class);
StackAdvisorCommand cmd=new TestStackAdvisorCommand(file,"test",1,stackAdvisorRunner,ambariMetaInfo);
ObjectNode objectNode=(ObjectNode)cmd.mapper.readTree("{\"Versions\": " + "{\"stack_name\": \"stack\", \"stack_version\":\"1.0.0\"}}");
doReturn(Arrays.asList("0.9","0.8")).when(ambariMetaInfo).getStackParentVersions("stack","1.0.0");
cmd.populateStackHierarchy(objectNode);
JsonNode stackHierarchy=objectNode.get("Versions").get("stack_hierarchy");
assertNotNull(stackHierarchy);
JsonNode stackName=stackHierarchy.get("stack_name");
assertNotNull(stackName);
assertEquals("stack",stackName.asText());
ArrayNode stackVersions=(ArrayNode)stackHierarchy.get("stack_versions");
assertNotNull(stackVersions);
assertEquals(2,stackVersions.size());
Iterator stackVersionsElements=stackVersions.getElements();
assertEquals("0.9",stackVersionsElements.next().asText());
assertEquals("0.8",stackVersionsElements.next().asText());
}
InternalCallVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testPopulateAmbariServerProperties() throws Exception {
File file=mock(File.class);
StackAdvisorRunner stackAdvisorRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo ambariMetaInfo=mock(AmbariMetaInfo.class);
StackAdvisorCommand cmd=new TestStackAdvisorCommand(file,"test",1,stackAdvisorRunner,ambariMetaInfo);
ObjectNode objectNode=(ObjectNode)cmd.mapper.readTree("{\"Versions\": " + "{\"stack_name\": \"stack\", \"stack_version\":\"1.0.0\"}}");
Map props=Collections.singletonMap("a","b");
doReturn(props).when(ambariMetaInfo).getAmbariServerProperties();
cmd.populateAmbariServerInfo(objectNode);
JsonNode serverProperties=objectNode.get("ambari-server-properties");
assertNotNull(serverProperties);
assertEquals("b",serverProperties.iterator().next().getTextValue());
}
InternalCallVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testPopulateStackHierarchy_noParents() throws Exception {
File file=mock(File.class);
StackAdvisorRunner stackAdvisorRunner=mock(StackAdvisorRunner.class);
AmbariMetaInfo ambariMetaInfo=mock(AmbariMetaInfo.class);
StackAdvisorCommand cmd=new TestStackAdvisorCommand(file,"test",1,stackAdvisorRunner,ambariMetaInfo);
ObjectNode objectNode=(ObjectNode)cmd.mapper.readTree("{\"Versions\": " + "{\"stack_name\": \"stack\", \"stack_version\":\"1.0.0\"}}");
doReturn(Collections.emptyList()).when(ambariMetaInfo).getStackParentVersions("stack","1.0.0");
cmd.populateStackHierarchy(objectNode);
JsonNode stackHierarchy=objectNode.get("Versions").get("stack_hierarchy");
assertNotNull(stackHierarchy);
JsonNode stackName=stackHierarchy.get("stack_name");
assertNotNull(stackName);
assertEquals("stack",stackName.asText());
ArrayNode stackVersions=(ArrayNode)stackHierarchy.get("stack_versions");
assertNotNull(stackVersions);
assertEquals(0,stackVersions.size());
}
Class: org.apache.ambari.server.bootstrap.BootStrapResourceTest InternalCallVerifier EqualityVerifier
@Test public void bootStrapPost() throws UniformInterfaceException, JSONException {
WebResource webResource=resource();
JSONObject object=webResource.path("/bootstrap").type(MediaType.APPLICATION_JSON).post(JSONObject.class,createDummySshInfo());
Assert.assertEquals("OK",object.get("status"));
}
InternalCallVerifier EqualityVerifier
@Test public void bootStrapGet() throws UniformInterfaceException, JSONException {
WebResource webResource=resource();
BootStrapStatus status=webResource.path("/bootstrap/0").type(MediaType.APPLICATION_JSON).get(BootStrapStatus.class);
LOG.info("GET Response from the API " + status.getLog() + " "+ status.getStatus());
Assert.assertEquals(status.getStatus(),BSStat.ERROR);
}
Class: org.apache.ambari.server.bootstrap.BootStrapTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPolling() throws Exception {
File tmpFolder=temp.newFolder("bootstrap");
FileUtils.writeStringToFile(new File(tmpFolder,"host1.done"),"0");
FileUtils.writeStringToFile(new File(tmpFolder,"host1.log"),"err_log_1");
FileUtils.writeStringToFile(new File(tmpFolder,"host2.done"),"1");
FileUtils.writeStringToFile(new File(tmpFolder,"host2.log"),"err_log_2");
List listHosts=new ArrayList();
listHosts.add("host1");
listHosts.add("host2");
BSHostStatusCollector collector=new BSHostStatusCollector(tmpFolder,listHosts);
collector.run();
List polledHostStatus=collector.getHostStatus();
Assert.assertTrue(polledHostStatus.size() == 2);
Assert.assertEquals(polledHostStatus.get(0).getHostName(),"host1");
Assert.assertEquals(polledHostStatus.get(0).getLog(),"err_log_1");
Assert.assertEquals(polledHostStatus.get(0).getStatus(),"DONE");
Assert.assertEquals(polledHostStatus.get(1).getHostName(),"host2");
Assert.assertEquals(polledHostStatus.get(1).getLog(),"err_log_2");
Assert.assertEquals(polledHostStatus.get(1).getStatus(),"FAILED");
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRun() throws Exception {
Properties properties=new Properties();
String bootdir=temp.newFolder("bootdir").toString();
String metadetadir=temp.newFolder("metadetadir").toString();
String serverVersionFilePath=temp.newFolder("serverVersionFilePath").toString();
LOG.info("Bootdir is " + bootdir);
LOG.info("Metadetadir is " + metadetadir);
LOG.info("ServerVersionFilePath is " + serverVersionFilePath);
String sharedResourcesDir="src/test/resources/";
if (System.getProperty("os.name").contains("Windows")) {
sharedResourcesDir=ClassLoader.getSystemClassLoader().getResource("").getPath();
}
properties.setProperty(Configuration.BOOTSTRAP_DIR,bootdir);
properties.setProperty(Configuration.BOOTSTRAP_SCRIPT,prepareEchoCommand(bootdir));
properties.setProperty(Configuration.SRVR_KSTR_DIR_KEY,"target" + File.separator + "classes");
properties.setProperty(Configuration.METADATA_DIR_PATH,metadetadir);
properties.setProperty(Configuration.SERVER_VERSION_FILE,serverVersionFilePath);
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,sharedResourcesDir);
Configuration conf=new Configuration(properties);
AmbariMetaInfo ambariMetaInfo=new AmbariMetaInfo(conf);
BootStrapImpl impl=new BootStrapImpl(conf,ambariMetaInfo);
impl.init();
SshHostInfo info=new SshHostInfo();
info.setSshKey("xyz");
ArrayList hosts=new ArrayList();
hosts.add("host1");
hosts.add("host2");
info.setUserRunAs("root");
info.setHosts(hosts);
info.setUser("user");
info.setPassword("passwd");
BSResponse response=impl.runBootStrap(info);
LOG.info("Response id from bootstrap " + response.getRequestId());
BootStrapStatus status=impl.getStatus(response.getRequestId());
LOG.info("Status " + status.getStatus());
int num=0;
while ((status.getStatus() == BSStat.RUNNING) && (num < 50)) {
status=impl.getStatus(response.getRequestId());
Thread.sleep(1000);
num++;
}
Thread.sleep(5000);
LOG.info("Status: log " + status.getLog() + " status="+ status.getStatus());
Assert.assertTrue(status.getLog().contains("host1,host2"));
Assert.assertEquals(BSStat.SUCCESS,status.getStatus());
Assert.assertFalse(new File(bootdir + File.separator + "1"+ File.separator+ "sshKey").exists());
Assert.assertFalse(new File(bootdir + File.separator + "1"+ File.separator+ "host_pass").exists());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testHostFailure() throws Exception {
Properties properties=new Properties();
String bootdir=temp.newFolder("bootdir").toString();
String metadetadir=temp.newFolder("metadetadir").toString();
String serverVersionFilePath=temp.newFolder("serverVersionFilePath").toString();
LOG.info("Bootdir is " + bootdir);
LOG.info("Metadetadir is " + metadetadir);
LOG.info("ServerVersionFilePath is " + serverVersionFilePath);
String sharedResourcesDir="src/test/resources/";
String serverKSTRDir="target" + File.separator + "classes";
if (System.getProperty("os.name").contains("Windows")) {
sharedResourcesDir=ClassLoader.getSystemClassLoader().getResource("").getPath();
serverKSTRDir=new File(new File(ClassLoader.getSystemClassLoader().getResource("").getPath()).getParent(),"classes").getPath();
}
properties.setProperty(Configuration.BOOTSTRAP_DIR,bootdir);
properties.setProperty(Configuration.BOOTSTRAP_SCRIPT,prepareEchoCommand(bootdir));
properties.setProperty(Configuration.SRVR_KSTR_DIR_KEY,serverKSTRDir);
properties.setProperty(Configuration.METADATA_DIR_PATH,metadetadir);
properties.setProperty(Configuration.SERVER_VERSION_FILE,serverVersionFilePath);
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,sharedResourcesDir);
Configuration conf=new Configuration(properties);
AmbariMetaInfo ambariMetaInfo=new AmbariMetaInfo(conf);
BootStrapImpl impl=new BootStrapImpl(conf,ambariMetaInfo);
impl.init();
SshHostInfo info=new SshHostInfo();
info.setSshKey("xyz");
ArrayList hosts=new ArrayList();
hosts.add("host1");
hosts.add("host2");
info.setHosts(hosts);
info.setUser("user");
info.setUserRunAs("root");
info.setPassword("passwd");
BSResponse response=impl.runBootStrap(info);
long requestId=response.getRequestId();
LOG.info("Response id from bootstrap " + requestId);
File requestDir=new File(bootdir,Long.toString(requestId));
int num=0;
while (!requestDir.exists() && num < 500) {
Thread.sleep(100);
num++;
}
if (!requestDir.exists()) {
LOG.warn("RequestDir does not exists");
}
FileUtils.writeStringToFile(new File(requestDir,"host1.done"),"0");
FileUtils.writeStringToFile(new File(requestDir,"host2.done"),"1");
BootStrapStatus status=impl.getStatus(response.getRequestId());
LOG.info("Status " + status.getStatus());
num=0;
while ((status.getStatus() == BSStat.RUNNING) && (num < 500)) {
status=impl.getStatus(response.getRequestId());
Thread.sleep(100);
num++;
}
LOG.info("Status: log " + status.getLog() + " status="+ status.getStatus());
Assert.assertTrue(status.getLog().contains("host1,host2"));
Assert.assertEquals(BSStat.ERROR,status.getStatus());
Assert.assertEquals("DONE",status.getHostsStatus().get(0).getStatus());
Assert.assertEquals("FAILED",status.getHostsStatus().get(1).getStatus());
}
Class: org.apache.ambari.server.checks.AbstractCheckDescriptorTest InternalCallVerifier EqualityVerifier
@Test public void testFormatEntityList(){
AbstractCheckDescriptor check=new TestCheckImpl(PrereqCheckType.HOST);
Assert.assertEquals("",check.formatEntityList(null));
final LinkedHashSet failedOn=new LinkedHashSet();
Assert.assertEquals("",check.formatEntityList(failedOn));
failedOn.add("host1");
Assert.assertEquals("host1",check.formatEntityList(failedOn));
failedOn.add("host2");
Assert.assertEquals("host1 and host2",check.formatEntityList(failedOn));
failedOn.add("host3");
Assert.assertEquals("host1, host2 and host3",check.formatEntityList(failedOn));
check=new TestCheckImpl(PrereqCheckType.CLUSTER);
Assert.assertEquals("host1, host2 and host3",check.formatEntityList(failedOn));
check=new TestCheckImpl(PrereqCheckType.SERVICE);
Assert.assertEquals("host1, host2 and host3",check.formatEntityList(failedOn));
check=new TestCheckImpl(null);
Assert.assertEquals("host1, host2 and host3",check.formatEntityList(failedOn));
}
Class: org.apache.ambari.server.checks.ClientRetryPropertyCheckTest InternalCallVerifier BooleanVerifier
/**
* @throws Exception
*/
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(m_clusters.getCluster("cluster")).thenReturn(cluster);
Map services=new HashMap();
Mockito.when(cluster.getServices()).thenReturn(services);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setRepositoryVersion("2.3.0.0");
Assert.assertFalse(m_check.isApplicable(request));
services.put("HDFS",Mockito.mock(Service.class));
Assert.assertTrue(m_check.isApplicable(request));
services.clear();
services.put("OOZIE",Mockito.mock(Service.class));
Assert.assertTrue(m_check.isApplicable(request));
}
Class: org.apache.ambari.server.checks.ComponentsInstallationCheckTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPerform() throws Exception {
PowerMockito.mockStatic(HostComponentSummary.class);
final ComponentsInstallationCheck componentsInstallationCheck=new ComponentsInstallationCheck();
componentsInstallationCheck.clustersProvider=new Provider(){
@Override public Clusters get(){
return clusters;
}
}
;
componentsInstallationCheck.ambariMetaInfo=new Provider(){
@Override public AmbariMetaInfo get(){
return ambariMetaInfo;
}
}
;
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP","2.2"));
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
final Service hdfsService=Mockito.mock(Service.class);
final Service tezService=Mockito.mock(Service.class);
final Service amsService=Mockito.mock(Service.class);
Mockito.when(hdfsService.getMaintenanceState()).thenReturn(MaintenanceState.OFF);
Mockito.when(tezService.getMaintenanceState()).thenReturn(MaintenanceState.OFF);
Mockito.when(amsService.getMaintenanceState()).thenReturn(MaintenanceState.OFF);
HashMap clusterServices=new HashMap();
clusterServices.put("HDFS",hdfsService);
clusterServices.put("TEZ",tezService);
clusterServices.put("AMBARI_METRICS",amsService);
Mockito.when(hdfsService.getName()).thenReturn("HDFS");
Mockito.when(tezService.getName()).thenReturn("TEZ");
Mockito.when(amsService.getName()).thenReturn("AMBARI_METRICS");
Mockito.when(hdfsService.isClientOnlyService()).thenReturn(false);
Mockito.when(tezService.isClientOnlyService()).thenReturn(true);
Mockito.when(amsService.isClientOnlyService()).thenReturn(false);
Mockito.when(cluster.getServices()).thenReturn(clusterServices);
Mockito.when(ambariMetaInfo.getComponent(Mockito.anyString(),Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenAnswer(new Answer(){
@Override public ComponentInfo answer( InvocationOnMock invocation) throws Throwable {
ComponentInfo anyInfo=Mockito.mock(ComponentInfo.class);
if (invocation.getArguments().length > 3 && "DATANODE".equals(invocation.getArguments()[3])) {
Mockito.when(anyInfo.getCardinality()).thenReturn("1+");
}
else {
Mockito.when(anyInfo.getCardinality()).thenReturn(null);
}
return anyInfo;
}
}
);
Map hdfsComponents=new HashMap();
ServiceComponent nameNode=Mockito.mock(ServiceComponent.class);
Mockito.when(nameNode.getName()).thenReturn("NAMENODE");
Mockito.when(nameNode.isClientComponent()).thenReturn(false);
Mockito.when(nameNode.isVersionAdvertised()).thenReturn(true);
Mockito.when(nameNode.isMasterComponent()).thenReturn(true);
ServiceComponent dataNode=Mockito.mock(ServiceComponent.class);
Mockito.when(dataNode.getName()).thenReturn("DATANODE");
Mockito.when(dataNode.isClientComponent()).thenReturn(false);
Mockito.when(dataNode.isVersionAdvertised()).thenReturn(true);
Mockito.when(dataNode.isMasterComponent()).thenReturn(false);
ServiceComponent zkfc=Mockito.mock(ServiceComponent.class);
Mockito.when(zkfc.getName()).thenReturn("ZKFC");
Mockito.when(zkfc.isClientComponent()).thenReturn(false);
Mockito.when(zkfc.isVersionAdvertised()).thenReturn(false);
Mockito.when(zkfc.isMasterComponent()).thenReturn(false);
hdfsComponents.put("NAMENODE",nameNode);
hdfsComponents.put("DATANODE",dataNode);
hdfsComponents.put("ZKFC",zkfc);
Mockito.when(hdfsService.getServiceComponents()).thenReturn(hdfsComponents);
Map tezComponents=new HashMap();
ServiceComponent tezClient=Mockito.mock(ServiceComponent.class);
Mockito.when(tezClient.getName()).thenReturn("TEZ_CLIENT");
Mockito.when(tezClient.isClientComponent()).thenReturn(true);
Mockito.when(tezClient.isVersionAdvertised()).thenReturn(true);
tezComponents.put("TEZ_CLIENT",tezClient);
Mockito.when(tezService.getServiceComponents()).thenReturn(tezComponents);
Map amsComponents=new HashMap();
ServiceComponent metricsCollector=Mockito.mock(ServiceComponent.class);
Mockito.when(metricsCollector.getName()).thenReturn("METRICS_COLLECTOR");
Mockito.when(metricsCollector.isClientComponent()).thenReturn(false);
Mockito.when(metricsCollector.isVersionAdvertised()).thenReturn(false);
ServiceComponent metricsMonitor=Mockito.mock(ServiceComponent.class);
Mockito.when(metricsMonitor.getName()).thenReturn("METRICS_MONITOR");
Mockito.when(metricsMonitor.isClientComponent()).thenReturn(false);
Mockito.when(metricsMonitor.isVersionAdvertised()).thenReturn(false);
amsComponents.put("METRICS_COLLECTOR",metricsCollector);
amsComponents.put("METRICS_MONITOR",metricsMonitor);
Mockito.when(amsService.getServiceComponents()).thenReturn(amsComponents);
final HostComponentSummary hcsNameNode=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsDataNode1=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsDataNode2=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsDataNode3=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsZKFC=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsTezClient=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsMetricsCollector=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsMetricsMonitor=Mockito.mock(HostComponentSummary.class);
List allHostComponentSummaries=new ArrayList();
allHostComponentSummaries.add(hcsNameNode);
allHostComponentSummaries.add(hcsDataNode1);
allHostComponentSummaries.add(hcsDataNode2);
allHostComponentSummaries.add(hcsDataNode3);
allHostComponentSummaries.add(hcsZKFC);
allHostComponentSummaries.add(hcsTezClient);
allHostComponentSummaries.add(hcsMetricsCollector);
allHostComponentSummaries.add(hcsMetricsMonitor);
final Map hosts=new HashMap();
final Host host1=Mockito.mock(Host.class);
final Host host2=Mockito.mock(Host.class);
final Host host3=Mockito.mock(Host.class);
Mockito.when(host1.getMaintenanceState(1L)).thenReturn(MaintenanceState.OFF);
Mockito.when(host2.getMaintenanceState(1L)).thenReturn(MaintenanceState.OFF);
Mockito.when(host3.getMaintenanceState(1L)).thenReturn(MaintenanceState.OFF);
hosts.put("host1",host1);
hosts.put("host2",host2);
hosts.put("host3",host3);
Mockito.when(hcsNameNode.getHostName()).thenReturn("host1");
Mockito.when(hcsDataNode1.getHostName()).thenReturn("host1");
Mockito.when(hcsDataNode2.getHostName()).thenReturn("host2");
Mockito.when(hcsDataNode3.getHostName()).thenReturn("host3");
Mockito.when(hcsZKFC.getHostName()).thenReturn("host1");
Mockito.when(hcsTezClient.getHostName()).thenReturn("host2");
Mockito.when(hcsMetricsCollector.getHostName()).thenReturn("host3");
Mockito.when(hcsMetricsMonitor.getHostName()).thenReturn("host3");
Mockito.when(HostComponentSummary.getHostComponentSummaries("HDFS","NAMENODE")).thenReturn(Arrays.asList(hcsNameNode));
Mockito.when(HostComponentSummary.getHostComponentSummaries("HDFS","DATANODE")).thenReturn(Arrays.asList(hcsDataNode1,hcsDataNode2,hcsDataNode3));
Mockito.when(HostComponentSummary.getHostComponentSummaries("HDFS","ZKFC")).thenReturn(Arrays.asList(hcsZKFC));
Mockito.when(HostComponentSummary.getHostComponentSummaries("TEZ","TEZ_CLIENT")).thenReturn(Arrays.asList(hcsTezClient));
Mockito.when(HostComponentSummary.getHostComponentSummaries("AMBARI_METRICS","METRICS_COLLECTOR")).thenReturn(Arrays.asList(hcsMetricsCollector));
Mockito.when(HostComponentSummary.getHostComponentSummaries("AMBARI_METRICS","METRICS_MONITOR")).thenReturn(Arrays.asList(hcsMetricsMonitor));
for ( String hostName : hosts.keySet()) {
Mockito.when(clusters.getHost(hostName)).thenReturn(hosts.get(hostName));
}
for ( HostComponentSummary hcs : allHostComponentSummaries) {
Mockito.when(hcs.getDesiredState()).thenReturn(State.INSTALLED);
Mockito.when(hcs.getCurrentState()).thenReturn(State.STARTED);
}
Mockito.when(hcsTezClient.getCurrentState()).thenReturn(State.INSTALLED);
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
componentsInstallationCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hcsMetricsCollector.getCurrentState()).thenReturn(State.INSTALL_FAILED);
Mockito.when(hcsMetricsMonitor.getCurrentState()).thenReturn(State.INSTALL_FAILED);
check=new PrerequisiteCheck(null,null);
componentsInstallationCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hcsTezClient.getCurrentState()).thenReturn(State.INSTALL_FAILED);
check=new PrerequisiteCheck(null,null);
componentsInstallationCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
Assert.assertTrue(check.getFailReason().indexOf("Service components in INSTALL_FAILED state") > -1);
Mockito.when(tezService.getMaintenanceState()).thenReturn(MaintenanceState.ON);
Mockito.when(hcsTezClient.getCurrentState()).thenReturn(State.INSTALL_FAILED);
check=new PrerequisiteCheck(null,null);
componentsInstallationCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(tezService.getMaintenanceState()).thenReturn(MaintenanceState.OFF);
Mockito.when(host2.getMaintenanceState(1L)).thenReturn(MaintenanceState.ON);
Mockito.when(hcsTezClient.getCurrentState()).thenReturn(State.INSTALL_FAILED);
check=new PrerequisiteCheck(null,null);
componentsInstallationCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
}
InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
PrereqCheckRequest checkRequest=new PrereqCheckRequest("c1");
checkRequest.setRepositoryVersion("HDP-2.2.0.0");
checkRequest.setSourceStackId(new StackId("HDP","2.2"));
checkRequest.setTargetStackId(new StackId("HDP","2.2"));
ComponentsInstallationCheck cic=new ComponentsInstallationCheck();
Configuration config=Mockito.mock(Configuration.class);
cic.config=config;
Assert.assertTrue(cic.isApplicable(checkRequest));
}
Class: org.apache.ambari.server.checks.ConfigurationMergeCheckTest InternalCallVerifier EqualityVerifier
@Test public void testPerform() throws Exception {
ConfigurationMergeCheck cmc=new ConfigurationMergeCheck();
final RepositoryVersionDAO repositoryVersionDAO=EasyMock.createMock(RepositoryVersionDAO.class);
expect(repositoryVersionDAO.findByStackNameAndVersion("HDP","1.0")).andReturn(createFor("1.0")).anyTimes();
expect(repositoryVersionDAO.findByStackNameAndVersion("HDP","1.1")).andReturn(createFor("1.1")).anyTimes();
replay(repositoryVersionDAO);
cmc.repositoryVersionDaoProvider=new Provider(){
@Override public RepositoryVersionDAO get(){
return repositoryVersionDAO;
}
}
;
cmc.clustersProvider=new Provider(){
@Override public Clusters get(){
return clusters;
}
}
;
cmc.m_mergeHelper=new ConfigMergeHelper();
Field field=ConfigMergeHelper.class.getDeclaredField("m_clusters");
field.setAccessible(true);
field.set(cmc.m_mergeHelper,cmc.clustersProvider);
final AmbariMetaInfo ami=EasyMock.createMock(AmbariMetaInfo.class);
field=ConfigMergeHelper.class.getDeclaredField("m_ambariMetaInfo");
field.setAccessible(true);
field.set(cmc.m_mergeHelper,new Provider(){
@Override public AmbariMetaInfo get(){
return ami;
}
}
);
PropertyInfo pi10=new PropertyInfo();
pi10.setFilename(CONFIG_FILE);
pi10.setName(CONFIG_PROPERTY);
pi10.setValue("1024");
PropertyInfo pi11=new PropertyInfo();
pi11.setFilename(CONFIG_FILE);
pi11.setName(CONFIG_PROPERTY);
pi11.setValue("1024");
expect(ami.getServiceProperties("HDP","1.0","HDFS")).andReturn(Collections.singleton(pi10)).anyTimes();
expect(ami.getServiceProperties("HDP","1.1","HDFS")).andReturn(Collections.singleton(pi11)).anyTimes();
expect(ami.getStackProperties(anyObject(String.class),anyObject(String.class))).andReturn(Collections.emptySet()).anyTimes();
replay(ami);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setTargetStackId(stackId_1_0);
request.setRepositoryVersion("1.1");
PrerequisiteCheck check=new PrerequisiteCheck(null,"cluster");
cmc.perform(check,request);
Assert.assertEquals("Expect no warnings",0,check.getFailedOn().size());
check=new PrerequisiteCheck(null,"cluster");
m_configMap.put(CONFIG_PROPERTY,"1025m");
pi11.setValue("1026");
cmc.perform(check,request);
Assert.assertEquals("Expect warning when user-set has changed from new default",1,check.getFailedOn().size());
Assert.assertEquals(1,check.getFailedDetail().size());
ConfigurationMergeCheck.MergeDetail detail=(ConfigurationMergeCheck.MergeDetail)check.getFailedDetail().get(0);
Assert.assertEquals("1025m",detail.current);
Assert.assertEquals("1026m",detail.new_stack_value);
Assert.assertEquals("1025m",detail.result_value);
Assert.assertEquals(CONFIG_TYPE,detail.type);
Assert.assertEquals(CONFIG_PROPERTY,detail.property);
check=new PrerequisiteCheck(null,"cluster");
pi11.setName(CONFIG_PROPERTY + ".foo");
cmc.perform(check,request);
Assert.assertEquals("Expect no warning when user new stack is empty",0,check.getFailedOn().size());
Assert.assertEquals(0,check.getFailedDetail().size());
check=new PrerequisiteCheck(null,"cluster");
pi11.setName(CONFIG_PROPERTY);
pi10.setName(CONFIG_PROPERTY + ".foo");
cmc.perform(check,request);
Assert.assertEquals("Expect warning when user old stack is empty, and value changed",1,check.getFailedOn().size());
Assert.assertEquals(1,check.getFailedDetail().size());
detail=(ConfigurationMergeCheck.MergeDetail)check.getFailedDetail().get(0);
Assert.assertEquals("1025m",detail.current);
Assert.assertEquals("1026m",detail.new_stack_value);
}
InternalCallVerifier BooleanVerifier
@Test public void testApplicable() throws Exception {
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setTargetStackId(stackId_1_0);
ConfigurationMergeCheck cmc=new ConfigurationMergeCheck();
Configuration config=EasyMock.createMock(Configuration.class);
replay(config);
cmc.config=config;
Assert.assertTrue(cmc.isApplicable(request));
}
Class: org.apache.ambari.server.checks.HiveDynamicServiceDiscoveryCheckTest InternalCallVerifier EqualityVerifier
@Test public void testPerform() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(m_clusters.getCluster("cluster")).thenReturn(cluster);
final DesiredConfig desiredConfig=Mockito.mock(DesiredConfig.class);
Mockito.when(desiredConfig.getTag()).thenReturn("tag");
Map configMap=new HashMap();
configMap.put("hive-site",desiredConfig);
Mockito.when(cluster.getDesiredConfigs()).thenReturn(configMap);
final Config config=Mockito.mock(Config.class);
Mockito.when(cluster.getConfig(Mockito.anyString(),Mockito.anyString())).thenReturn(config);
final Map properties=new HashMap();
Mockito.when(config.getProperties()).thenReturn(properties);
Map checkProperties=new HashMap();
checkProperties.put("min-failure-stack-version","HDP-2.3.0.0");
PrerequisiteCheckConfig prerequisiteCheckConfig=Mockito.mock(PrerequisiteCheckConfig.class);
Mockito.when(prerequisiteCheckConfig.getCheckProperties(m_check.getClass().getName())).thenReturn(checkProperties);
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
request.setSourceStackId(new StackId("HDP-2.2.4.2"));
request.setTargetStackId(new StackId("HDP-2.2.8.4"));
m_check.perform(check,request);
Assert.assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
request.setSourceStackId(new StackId("HDP-2.2.4.2"));
request.setTargetStackId(new StackId("HDP-2.3.8.4"));
m_check.perform(check,request);
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
request.setSourceStackId(new StackId("HDP-2.3.4.2"));
request.setTargetStackId(new StackId("HDP-2.3.8.4"));
m_check.perform(check,request);
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
request.setSourceStackId(new StackId("HDP-2.3.4.2"));
request.setTargetStackId(new StackId("HDP-2.4.8.4"));
m_check.perform(check,request);
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
properties.put("hive.server2.support.dynamic.service.discovery","true");
properties.put("hive.zookeeper.quorum","host");
properties.put("hive.server2.zookeeper.namespace","namespace");
check=new PrerequisiteCheck(null,null);
m_check.perform(check,request);
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
}
Class: org.apache.ambari.server.checks.HiveMultipleMetastoreCheckTest InternalCallVerifier BooleanVerifier
/**
* Tests that the check is applicable when hive is installed.
* @throws Exception
*/
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(m_clusters.getCluster("cluster")).thenReturn(cluster);
Map services=new HashMap();
Mockito.when(cluster.getServices()).thenReturn(services);
services.put("HDFS",Mockito.mock(Service.class));
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setRepositoryVersion("2.3.0.0");
Assert.assertFalse(m_check.isApplicable(request));
services.put("HIVE",Mockito.mock(Service.class));
Assert.assertTrue(m_check.isApplicable(request));
}
InternalCallVerifier EqualityVerifier
@Test public void testPerformFail() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
final LinkedHashSet failedOnExpected=new LinkedHashSet();
Service hive=Mockito.mock(Service.class);
ServiceComponent metastore=Mockito.mock(ServiceComponent.class);
Map metastores=new HashMap();
failedOnExpected.add("HIVE");
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(m_clusters.getCluster("cluster")).thenReturn(cluster);
Mockito.when(cluster.getService("HIVE")).thenReturn(hive);
Mockito.when(hive.getServiceComponent("HIVE_METASTORE")).thenReturn(metastore);
Mockito.when(metastore.getServiceComponentHosts()).thenReturn(metastores);
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setRepositoryVersion("2.3.0.0");
m_check.perform(check,request);
Assert.assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
check=new PrerequisiteCheck(null,null);
m_check.perform(check,request);
Assert.assertEquals(failedOnExpected,check.getFailedOn());
Assert.assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
}
Class: org.apache.ambari.server.checks.HostsHeartbeatCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
PrereqCheckRequest checkRequest=new PrereqCheckRequest("c1");
checkRequest.setRepositoryVersion("HDP-2.2.0.0");
checkRequest.setSourceStackId(new StackId("HDP","2.2"));
checkRequest.setTargetStackId(new StackId("HDP","2.2"));
HostsHeartbeatCheck hhc=new HostsHeartbeatCheck();
Configuration config=Mockito.mock(Configuration.class);
hhc.config=config;
Assert.assertTrue(hhc.isApplicable(checkRequest));
}
Class: org.apache.ambari.server.checks.HostsMasterMaintenanceCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setRepositoryVersion("not null");
HostsMasterMaintenanceCheck hmmc=new HostsMasterMaintenanceCheck();
Configuration config=Mockito.mock(Configuration.class);
hmmc.config=config;
Assert.assertTrue(hmmc.isApplicable(request));
Assert.assertTrue(new HostsMasterMaintenanceCheck().isApplicable(request));
HostsMasterMaintenanceCheck hmmc2=new HostsMasterMaintenanceCheck();
hmmc2.config=config;
Assert.assertTrue(hmmc2.isApplicable(request));
request.setRepositoryVersion(null);
hmmc2.config=config;
Assert.assertFalse(hmmc2.isApplicable(request));
}
Class: org.apache.ambari.server.checks.HostsRepositoryVersionCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setRepositoryVersion("not null");
HostsRepositoryVersionCheck hrvc=new HostsRepositoryVersionCheck();
Configuration config=Mockito.mock(Configuration.class);
hrvc.config=config;
Assert.assertTrue(hrvc.isApplicable(request));
Assert.assertTrue(new HostsMasterMaintenanceCheck().isApplicable(request));
HostsRepositoryVersionCheck hrvc2=new HostsRepositoryVersionCheck();
hrvc2.config=config;
Assert.assertTrue(hrvc2.isApplicable(request));
request.setRepositoryVersion(null);
HostsMasterMaintenanceCheck hmmc2=new HostsMasterMaintenanceCheck();
hmmc2.config=config;
Assert.assertFalse(hmmc2.isApplicable(request));
}
Class: org.apache.ambari.server.checks.InstallPackagesCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
PrereqCheckRequest checkRequest=new PrereqCheckRequest(clusterName);
checkRequest.setRepositoryVersion(repositoryVersion);
checkRequest.setSourceStackId(sourceStackId);
checkRequest.setTargetStackId(targetStackId);
InstallPackagesCheck ipc=new InstallPackagesCheck();
Configuration config=Mockito.mock(Configuration.class);
ipc.config=config;
Assert.assertTrue(ipc.isApplicable(checkRequest));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPerform() throws Exception {
StackId stackId=new StackId("HDP","2.2");
PowerMockito.mockStatic(HostComponentSummary.class);
final InstallPackagesCheck installPackagesCheck=new InstallPackagesCheck();
installPackagesCheck.clustersProvider=new Provider(){
@Override public Clusters get(){
return clusters;
}
}
;
installPackagesCheck.ambariMetaInfo=new Provider(){
@Override public AmbariMetaInfo get(){
return ambariMetaInfo;
}
}
;
installPackagesCheck.clusterVersionDAOProvider=new Provider(){
@Override public ClusterVersionDAO get(){
return clusterVersionDAO;
}
}
;
installPackagesCheck.hostVersionDaoProvider=new Provider(){
@Override public HostVersionDAO get(){
return hostVersionDAO;
}
}
;
installPackagesCheck.repositoryVersionDaoProvider=new Provider(){
@Override public RepositoryVersionDAO get(){
return repositoryVersionDAO;
}
}
;
StackEntity stack=new StackEntity();
stack.setStackName(stackId.getStackName());
stack.setStackVersion(stackId.getStackVersion());
RepositoryVersionEntity rve=new RepositoryVersionEntity(stack,repositoryVersion,repositoryVersion,"rhel6");
Mockito.when(repositoryVersionDAO.findByStackNameAndVersion(Mockito.anyString(),Mockito.anyString())).thenReturn(rve);
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterName()).thenReturn(clusterName);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(stackId);
Mockito.when(clusters.getCluster(clusterName)).thenReturn(cluster);
ClusterVersionEntity clusterVersionEntity=Mockito.mock(ClusterVersionEntity.class);
Mockito.when(clusterVersionEntity.getState()).thenReturn(RepositoryVersionState.INSTALLED);
Mockito.when(clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,targetStackId,repositoryVersion)).thenReturn(clusterVersionEntity);
final List hostNames=new ArrayList();
hostNames.add("host1");
hostNames.add("host2");
hostNames.add("host3");
final List hosts=new ArrayList();
final List hostVersionEntities=new ArrayList();
for ( String hostName : hostNames) {
Host host=Mockito.mock(Host.class);
host.setHostName(hostName);
Mockito.when(host.getHostName()).thenReturn(hostName);
Mockito.when(host.getMaintenanceState(1L)).thenReturn(MaintenanceState.OFF);
hosts.add(host);
HostVersionEntity hve=Mockito.mock(HostVersionEntity.class);
Mockito.when(hve.getRepositoryVersion()).thenReturn(rve);
Mockito.when(hve.getState()).thenReturn(RepositoryVersionState.INSTALLED);
hostVersionEntities.add(hve);
Mockito.when(hostVersionDAO.findByHost(hostName)).thenReturn(Collections.singletonList(hve));
}
Mockito.when(cluster.getHosts()).thenReturn(hosts);
PrereqCheckRequest checkRequest=new PrereqCheckRequest(clusterName);
checkRequest.setRepositoryVersion(repositoryVersion);
checkRequest.setSourceStackId(sourceStackId);
checkRequest.setTargetStackId(targetStackId);
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
installPackagesCheck.perform(check,checkRequest);
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hostVersionEntities.get(0).getState()).thenReturn(RepositoryVersionState.INSTALL_FAILED);
Mockito.when(clusterVersionEntity.getState()).thenReturn(RepositoryVersionState.INSTALL_FAILED);
check=new PrerequisiteCheck(null,null);
installPackagesCheck.perform(check,checkRequest);
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
Assert.assertNotNull(check.getFailedOn());
Assert.assertTrue(check.getFailedOn().contains("host1"));
Mockito.when(hostVersionEntities.get(0).getState()).thenReturn(RepositoryVersionState.INSTALL_FAILED);
Mockito.when(hosts.get(0).getMaintenanceState(1L)).thenReturn(MaintenanceState.ON);
Mockito.when(clusterVersionEntity.getState()).thenReturn(RepositoryVersionState.INSTALL_FAILED);
check=new PrerequisiteCheck(null,null);
installPackagesCheck.perform(check,checkRequest);
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
Assert.assertNotNull(check.getFailedOn());
Assert.assertTrue(check.getFailedOn().contains(clusterName));
}
Class: org.apache.ambari.server.checks.MapReduce2JobHistoryStatePreservingCheckTest InternalCallVerifier BooleanVerifier
/**
* @throws Exception
*/
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(m_clusters.getCluster("cluster")).thenReturn(cluster);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.3"));
Map services=new HashMap();
Mockito.when(cluster.getServices()).thenReturn(services);
ClusterVersionEntity clusterVersionEntity=Mockito.mock(ClusterVersionEntity.class);
Mockito.when(cluster.getCurrentClusterVersion()).thenReturn(clusterVersionEntity);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setTargetStackId(new StackId("HDP","2.3.1.1"));
request.setSourceStackId(new StackId("HDP","2.3.0.0"));
Assert.assertFalse(m_check.isApplicable(request));
services.put("MAPREDUCE2",Mockito.mock(Service.class));
Assert.assertTrue(m_check.isApplicable(request));
}
InternalCallVerifier BooleanVerifier
@SuppressWarnings("serial") @Test public void testIsApplicableMinimumStackVersion() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getServices()).thenReturn(new HashMap(){
{
put("MAPREDUCE2",null);
}
}
);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("MYSTACK-12.2"));
ClusterVersionEntity clusterVersionEntity=Mockito.mock(ClusterVersionEntity.class);
Mockito.when(cluster.getCurrentClusterVersion()).thenReturn(clusterVersionEntity);
RepositoryVersionEntity repositoryVersionEntity=Mockito.mock(RepositoryVersionEntity.class);
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(m_clusters.getCluster("c1")).thenReturn(cluster);
PrereqCheckRequest request=new PrereqCheckRequest("c1");
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.0.0.1");
boolean isApplicable=m_check.isApplicable(request);
Assert.assertTrue(isApplicable);
}
Class: org.apache.ambari.server.checks.RangerPasswordCheckTest InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testUserUnauthorizedByRedirect() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_USER_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(BAD_LOGIN_RESPONSE.getBytes())).once();
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
assertEquals("Credentials for user 'r_admin' in Ambari do not match Ranger.",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testAdminBadResponse() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(404);
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(CheckDescription.SERVICES_RANGER_PASSWORD_VERIFY,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not verify credentials for user 'admin'. Response code 404 received from " + RANGER_URL + "service/public/api/repository/count",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testUserBadResponse() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_USER_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(500);
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not verify credentials for user 'r_admin'. Response code 500 received from " + RANGER_URL + "service/public/api/repository/count",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testMissingProps() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
m_rpc.m_streamProvider=streamProvider;
m_configMap.clear();
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not check credentials. Missing property admin-properties/policymgr_external_url",check.getFailReason());
m_configMap.put("policymgr_external_url",RANGER_URL);
check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not check credentials. Missing property ranger-env/admin_username",check.getFailReason());
m_configMap.put("admin_username","admin");
check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not check credentials. Missing property ranger-env/admin_password",check.getFailReason());
m_configMap.put("admin_password","pass");
check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not check credentials. Missing property ranger-env/ranger_admin_username",check.getFailReason());
m_configMap.put("ranger_admin_username","r_admin");
check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not check credentials. Missing property ranger-env/ranger_admin_password",check.getFailReason());
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes()));
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_USER_RESPONSE.getBytes()));
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes()));
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_configMap.put("ranger_admin_password","r_pass");
check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.PASS,check.getStatus());
}
InternalCallVerifier BooleanVerifier
@Test public void testApplicable() throws Exception {
final Service service=EasyMock.createMock(Service.class);
Map services=new HashMap<>();
services.put("RANGER",service);
Cluster cluster=m_clusters.getCluster("cluster");
EasyMock.reset(cluster);
expect(cluster.getServices()).andReturn(services).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP-2.3")).anyTimes();
replay(cluster);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setSourceStackId(new StackId("HDP-2.3"));
assertTrue(m_rpc.isApplicable(request));
request=new PrereqCheckRequest("cluster");
request.setSourceStackId(new StackId("HDP-2.2"));
assertFalse(m_rpc.isApplicable(request));
EasyMock.reset(cluster);
expect(cluster.getServices()).andReturn(services).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("WILDSTACK-2.0")).anyTimes();
replay(cluster);
request=new PrereqCheckRequest("cluster");
request.setSourceStackId(new StackId("HDP-2.2"));
assertTrue(m_rpc.isApplicable(request));
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testAdminUnauthorized() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(401);
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(CheckDescription.SERVICES_RANGER_PASSWORD_VERIFY,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
assertEquals("Credentials for user 'admin' in Ambari do not match Ranger.",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testJsonCasting() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes()));
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream("{ \"data\": \"bad\", \"vXUsers\": \"xyz\" }".getBytes()));
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
String error="The response from Ranger was malformed. ";
error+="java.lang.String cannot be cast to java.util.List. ";
error+="Request: " + RANGER_URL + "service/xusers/users?name=r_admin";
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals(error,check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testUserUnauthorized() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_USER_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(401);
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
assertEquals("Credentials for user 'r_admin' in Ambari do not match Ranger.",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testUserIOException() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_USER_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andThrow(new IOException("again!"));
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not access Ranger to verify user 'r_admin' against " + RANGER_URL + "service/public/api/repository/count. again!",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testBadUserParsing() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(GOOD_LOGIN_RESPONSE.getBytes())).once();
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream("some really bad non-json".getBytes()));
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
String error="The response from Ranger was malformed. ";
error+="com.google.gson.stream.MalformedJsonException: Expected EOF at line 1 column 6. ";
error+="Request: " + RANGER_URL + "service/xusers/users?name=r_admin";
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals(error,check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testAdminIOException() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andThrow(new IOException("whoops"));
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(CheckDescription.SERVICES_RANGER_PASSWORD_VERIFY,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.WARNING,check.getStatus());
assertEquals("Could not access Ranger to verify user 'admin' against " + RANGER_URL + "service/public/api/repository/count. whoops",check.getFailReason());
verify(conn,streamProvider);
}
InternalCallVerifier EqualityVerifier
@SuppressWarnings("unchecked") @Test public void testAdminUnauthorizedByRedirect() throws Exception {
HttpURLConnection conn=EasyMock.createMock(HttpURLConnection.class);
URLStreamProvider streamProvider=EasyMock.createMock(URLStreamProvider.class);
expect(conn.getResponseCode()).andReturn(200);
expect(conn.getInputStream()).andReturn(new ByteArrayInputStream(BAD_LOGIN_RESPONSE.getBytes()));
expect(streamProvider.processURL((String)anyObject(),(String)anyObject(),(InputStream)anyObject(),(Map>)anyObject())).andReturn(conn).anyTimes();
replay(conn,streamProvider);
m_rpc.m_streamProvider=streamProvider;
PrerequisiteCheck check=new PrerequisiteCheck(CheckDescription.SERVICES_RANGER_PASSWORD_VERIFY,null);
m_rpc.perform(check,new PrereqCheckRequest("cluster"));
assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
assertEquals("Credentials for user 'admin' in Ambari do not match Ranger.",check.getFailReason());
verify(conn,streamProvider);
}
Class: org.apache.ambari.server.checks.SecondaryNamenodeDeletedCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
final Map services=new HashMap<>();
final Service service=Mockito.mock(Service.class);
services.put("HDFS",service);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getServices()).thenReturn(services);
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
Assert.assertTrue(secondaryNamenodeDeletedCheck.isApplicable(new PrereqCheckRequest("cluster")));
PrereqCheckRequest req=new PrereqCheckRequest("cluster");
req.addResult(CheckDescription.SERVICES_NAMENODE_HA,PrereqCheckStatus.FAIL);
Assert.assertFalse(secondaryNamenodeDeletedCheck.isApplicable(req));
req.addResult(CheckDescription.SERVICES_NAMENODE_HA,PrereqCheckStatus.PASS);
Assert.assertTrue(secondaryNamenodeDeletedCheck.isApplicable(req));
services.remove("HDFS");
Assert.assertFalse(secondaryNamenodeDeletedCheck.isApplicable(new PrereqCheckRequest("cluster")));
}
Class: org.apache.ambari.server.checks.ServicesMaintenanceModeCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
PrereqCheckRequest checkRequest=new PrereqCheckRequest("c1");
checkRequest.setRepositoryVersion("HDP-2.2.0.0");
checkRequest.setSourceStackId(new StackId("HDP","2.2"));
checkRequest.setTargetStackId(new StackId("HDP","2.2"));
ServicesMaintenanceModeCheck smmc=new ServicesMaintenanceModeCheck();
Configuration config=Mockito.mock(Configuration.class);
smmc.config=config;
Assert.assertTrue(smmc.isApplicable(checkRequest));
}
Class: org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
final Map services=new HashMap<>();
final Service service=Mockito.mock(Service.class);
services.put("YARN",service);
Mockito.when(cluster.getServices()).thenReturn(services);
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Assert.assertTrue(servicesMapReduceDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster")));
PrereqCheckRequest req=new PrereqCheckRequest("cluster");
req.addResult(CheckDescription.SERVICES_NAMENODE_HA,PrereqCheckStatus.FAIL);
Assert.assertFalse(servicesMapReduceDistributedCacheCheck.isApplicable(req));
req.addResult(CheckDescription.SERVICES_NAMENODE_HA,PrereqCheckStatus.PASS);
Assert.assertTrue(servicesMapReduceDistributedCacheCheck.isApplicable(req));
services.remove("YARN");
Assert.assertFalse(servicesMapReduceDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster")));
}
Class: org.apache.ambari.server.checks.ServicesNamenodeHighAvailabilityCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
final Map services=new HashMap<>();
final Service service=Mockito.mock(Service.class);
services.put("HDFS",service);
Mockito.when(cluster.getServices()).thenReturn(services);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
Assert.assertTrue(servicesNamenodeHighAvailabilityCheck.isApplicable(new PrereqCheckRequest("cluster")));
services.remove("HDFS");
Assert.assertFalse(servicesNamenodeHighAvailabilityCheck.isApplicable(new PrereqCheckRequest("cluster")));
}
Class: org.apache.ambari.server.checks.ServicesNamenodeTruncateCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
PrereqCheckRequest checkRequest=new PrereqCheckRequest("c1");
checkRequest.setRepositoryVersion("HDP-2.2.0.0");
checkRequest.setSourceStackId(new StackId("HDP","2.2"));
checkRequest.setTargetStackId(new StackId("HDP","2.2"));
Assert.assertTrue(m_check.isApplicable(checkRequest));
}
Class: org.apache.ambari.server.checks.ServicesTezDistributedCacheCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
final Map services=new HashMap<>();
final Service service=Mockito.mock(Service.class);
services.put("TEZ",service);
Mockito.when(cluster.getServices()).thenReturn(services);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
Assert.assertTrue(servicesTezDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster")));
PrereqCheckRequest req=new PrereqCheckRequest("cluster");
req.addResult(CheckDescription.SERVICES_NAMENODE_HA,PrereqCheckStatus.FAIL);
Assert.assertFalse(servicesTezDistributedCacheCheck.isApplicable(req));
req.addResult(CheckDescription.SERVICES_NAMENODE_HA,PrereqCheckStatus.PASS);
Assert.assertTrue(servicesTezDistributedCacheCheck.isApplicable(req));
services.remove("TEZ");
Assert.assertFalse(servicesTezDistributedCacheCheck.isApplicable(new PrereqCheckRequest("cluster")));
}
Class: org.apache.ambari.server.checks.ServicesUpCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
PrereqCheckRequest checkRequest=new PrereqCheckRequest("c1");
checkRequest.setRepositoryVersion("HDP-2.2.0.0");
checkRequest.setSourceStackId(new StackId("HDP","2.2"));
checkRequest.setTargetStackId(new StackId("HDP","2.2"));
ServicesUpCheck suc=new ServicesUpCheck();
Configuration config=Mockito.mock(Configuration.class);
suc.config=config;
Assert.assertTrue(suc.isApplicable(checkRequest));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPerform() throws Exception {
PowerMockito.mockStatic(HostComponentSummary.class);
final ServicesUpCheck servicesUpCheck=new ServicesUpCheck();
servicesUpCheck.clustersProvider=new Provider(){
@Override public Clusters get(){
return clusters;
}
}
;
servicesUpCheck.ambariMetaInfo=new Provider(){
@Override public AmbariMetaInfo get(){
return ambariMetaInfo;
}
}
;
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP","2.2"));
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
final Service hdfsService=Mockito.mock(Service.class);
final Service tezService=Mockito.mock(Service.class);
final Service amsService=Mockito.mock(Service.class);
HashMap clusterServices=new HashMap();
clusterServices.put("HDFS",hdfsService);
clusterServices.put("TEZ",tezService);
clusterServices.put("AMBARI_METRICS",amsService);
Mockito.when(hdfsService.getName()).thenReturn("HDFS");
Mockito.when(tezService.getName()).thenReturn("TEZ");
Mockito.when(amsService.getName()).thenReturn("AMBARI_METRICS");
Mockito.when(hdfsService.isClientOnlyService()).thenReturn(false);
Mockito.when(tezService.isClientOnlyService()).thenReturn(true);
Mockito.when(amsService.isClientOnlyService()).thenReturn(false);
Mockito.when(cluster.getServices()).thenReturn(clusterServices);
Mockito.when(ambariMetaInfo.getComponent(Mockito.anyString(),Mockito.anyString(),Mockito.anyString(),Mockito.anyString())).thenAnswer(new Answer(){
@Override public ComponentInfo answer( InvocationOnMock invocation) throws Throwable {
ComponentInfo anyInfo=Mockito.mock(ComponentInfo.class);
if (invocation.getArguments().length > 3 && "DATANODE".equals(invocation.getArguments()[3])) {
Mockito.when(anyInfo.getCardinality()).thenReturn("1+");
}
else {
Mockito.when(anyInfo.getCardinality()).thenReturn(null);
}
return anyInfo;
}
}
);
Map hdfsComponents=new HashMap();
ServiceComponent nameNode=Mockito.mock(ServiceComponent.class);
Mockito.when(nameNode.getName()).thenReturn("NAMENODE");
Mockito.when(nameNode.isClientComponent()).thenReturn(false);
Mockito.when(nameNode.isVersionAdvertised()).thenReturn(true);
Mockito.when(nameNode.isMasterComponent()).thenReturn(true);
ServiceComponent dataNode=Mockito.mock(ServiceComponent.class);
Mockito.when(dataNode.getName()).thenReturn("DATANODE");
Mockito.when(dataNode.isClientComponent()).thenReturn(false);
Mockito.when(dataNode.isVersionAdvertised()).thenReturn(true);
Mockito.when(dataNode.isMasterComponent()).thenReturn(false);
ServiceComponent zkfc=Mockito.mock(ServiceComponent.class);
Mockito.when(zkfc.getName()).thenReturn("ZKFC");
Mockito.when(zkfc.isClientComponent()).thenReturn(false);
Mockito.when(zkfc.isVersionAdvertised()).thenReturn(false);
Mockito.when(zkfc.isMasterComponent()).thenReturn(false);
hdfsComponents.put("NAMENODE",nameNode);
hdfsComponents.put("DATANODE",dataNode);
hdfsComponents.put("ZKFC",zkfc);
Mockito.when(hdfsService.getServiceComponents()).thenReturn(hdfsComponents);
Map tezComponents=new HashMap();
ServiceComponent tezClient=Mockito.mock(ServiceComponent.class);
Mockito.when(tezClient.getName()).thenReturn("TEZ_CLIENT");
Mockito.when(tezClient.isClientComponent()).thenReturn(true);
Mockito.when(tezClient.isVersionAdvertised()).thenReturn(true);
tezComponents.put("TEZ_CLIENT",tezClient);
Mockito.when(tezService.getServiceComponents()).thenReturn(tezComponents);
Map amsComponents=new HashMap();
ServiceComponent metricsCollector=Mockito.mock(ServiceComponent.class);
Mockito.when(metricsCollector.getName()).thenReturn("METRICS_COLLECTOR");
Mockito.when(metricsCollector.isClientComponent()).thenReturn(false);
Mockito.when(metricsCollector.isVersionAdvertised()).thenReturn(false);
ServiceComponent metricsMonitor=Mockito.mock(ServiceComponent.class);
Mockito.when(metricsMonitor.getName()).thenReturn("METRICS_MONITOR");
Mockito.when(metricsMonitor.isClientComponent()).thenReturn(false);
Mockito.when(metricsMonitor.isVersionAdvertised()).thenReturn(false);
amsComponents.put("METRICS_COLLECTOR",metricsCollector);
amsComponents.put("METRICS_MONITOR",metricsMonitor);
Mockito.when(amsService.getServiceComponents()).thenReturn(amsComponents);
final HostComponentSummary hcsNameNode=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsDataNode1=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsDataNode2=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsDataNode3=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsZKFC=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsTezClient=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsMetricsCollector=Mockito.mock(HostComponentSummary.class);
final HostComponentSummary hcsMetricsMonitor=Mockito.mock(HostComponentSummary.class);
List allHostComponentSummaries=new ArrayList();
allHostComponentSummaries.add(hcsNameNode);
allHostComponentSummaries.add(hcsDataNode1);
allHostComponentSummaries.add(hcsDataNode2);
allHostComponentSummaries.add(hcsDataNode3);
allHostComponentSummaries.add(hcsZKFC);
allHostComponentSummaries.add(hcsTezClient);
allHostComponentSummaries.add(hcsMetricsCollector);
allHostComponentSummaries.add(hcsMetricsMonitor);
Mockito.when(HostComponentSummary.getHostComponentSummaries("HDFS","NAMENODE")).thenReturn(Arrays.asList(hcsNameNode));
Mockito.when(HostComponentSummary.getHostComponentSummaries("HDFS","DATANODE")).thenReturn(Arrays.asList(hcsDataNode1,hcsDataNode2,hcsDataNode3));
Mockito.when(HostComponentSummary.getHostComponentSummaries("HDFS","ZKFC")).thenReturn(Arrays.asList(hcsZKFC));
Mockito.when(HostComponentSummary.getHostComponentSummaries("TEZ","TEZ_CLIENT")).thenReturn(Arrays.asList(hcsTezClient));
Mockito.when(HostComponentSummary.getHostComponentSummaries("AMBARI_METRICS","METRICS_COLLECTOR")).thenReturn(Arrays.asList(hcsMetricsCollector));
Mockito.when(HostComponentSummary.getHostComponentSummaries("AMBARI_METRICS","METRICS_MONITOR")).thenReturn(Arrays.asList(hcsMetricsMonitor));
for ( HostComponentSummary hcs : allHostComponentSummaries) {
Mockito.when(hcs.getDesiredState()).thenReturn(State.INSTALLED);
Mockito.when(hcs.getCurrentState()).thenReturn(State.STARTED);
}
PrerequisiteCheck check=new PrerequisiteCheck(null,null);
servicesUpCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hcsNameNode.getDesiredState()).thenReturn(State.STARTED);
Mockito.when(hcsDataNode1.getDesiredState()).thenReturn(State.STARTED);
check=new PrerequisiteCheck(null,null);
servicesUpCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hcsZKFC.getCurrentState()).thenReturn(State.INSTALLED);
Mockito.when(hcsMetricsCollector.getCurrentState()).thenReturn(State.INSTALLED);
Mockito.when(hcsMetricsMonitor.getCurrentState()).thenReturn(State.INSTALLED);
check=new PrerequisiteCheck(null,null);
servicesUpCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hcsNameNode.getCurrentState()).thenReturn(State.INSTALLED);
Mockito.when(hcsDataNode1.getCurrentState()).thenReturn(State.INSTALLED);
check=new PrerequisiteCheck(null,null);
servicesUpCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
Mockito.when(hcsNameNode.getCurrentState()).thenReturn(State.STARTED);
Mockito.when(hcsDataNode1.getCurrentState()).thenReturn(State.INSTALLED);
check=new PrerequisiteCheck(null,null);
servicesUpCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.PASS,check.getStatus());
Mockito.when(hcsNameNode.getCurrentState()).thenReturn(State.STARTED);
Mockito.when(hcsDataNode1.getCurrentState()).thenReturn(State.INSTALLED);
Mockito.when(hcsDataNode2.getCurrentState()).thenReturn(State.INSTALLED);
check=new PrerequisiteCheck(null,null);
servicesUpCheck.perform(check,new PrereqCheckRequest("cluster"));
Assert.assertEquals(PrereqCheckStatus.FAIL,check.getStatus());
Assert.assertTrue(check.getFailReason().indexOf("50%") > -1);
}
Class: org.apache.ambari.server.checks.ServicesYarnWorkPreservingCheckTest InternalCallVerifier BooleanVerifier
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
final Map services=new HashMap<>();
final Service service=Mockito.mock(Service.class);
services.put("YARN",service);
Mockito.when(cluster.getServices()).thenReturn(services);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(clusters.getCluster("cluster")).thenReturn(cluster);
Assert.assertTrue(servicesYarnWorkPreservingCheck.isApplicable(new PrereqCheckRequest("cluster")));
services.remove("YARN");
Assert.assertFalse(servicesYarnWorkPreservingCheck.isApplicable(new PrereqCheckRequest("cluster")));
}
Class: org.apache.ambari.server.checks.UpgradeCheckOrderTest BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that instances of {@link AbstractCheckDescriptor} are ordered
* correctly.
* @throws Exception
*/
@Test public void testUpgradeOrder() throws Exception {
String sourceResourceDirectory="src" + File.separator + "test"+ File.separator+ "resources";
Properties properties=new Properties();
properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY,"in-memory");
properties.setProperty(Configuration.OS_VERSION_KEY,"centos6");
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,sourceResourceDirectory);
Injector injector=Guice.createInjector(new ControllerModule(properties));
UpgradeCheckRegistry registry=injector.getInstance(UpgradeCheckRegistry.class);
UpgradeCheckRegistry registry2=injector.getInstance(UpgradeCheckRegistry.class);
Assert.assertEquals(registry,registry2);
List checks=registry.getUpgradeChecks();
ClassPathScanningCandidateComponentProvider scanner=new ClassPathScanningCandidateComponentProvider(false);
AssignableTypeFilter filter=new AssignableTypeFilter(AbstractCheckDescriptor.class);
scanner.addIncludeFilter(filter);
Set beanDefinitions=scanner.findCandidateComponents("org.apache.ambari.server");
Assert.assertEquals(beanDefinitions.size(),checks.size());
AbstractCheckDescriptor lastCheck=null;
for ( AbstractCheckDescriptor check : checks) {
UpgradeCheckGroup group=UpgradeCheckGroup.DEFAULT;
UpgradeCheckGroup lastGroup=UpgradeCheckGroup.DEFAULT;
if (null != lastCheck) {
UpgradeCheck annotation=check.getClass().getAnnotation(UpgradeCheck.class);
UpgradeCheck lastAnnotation=lastCheck.getClass().getAnnotation(UpgradeCheck.class);
if (null != annotation && null != lastAnnotation) {
group=annotation.group();
lastGroup=lastAnnotation.group();
Assert.assertTrue(lastGroup.getOrder().compareTo(group.getOrder()) <= 0);
}
}
lastCheck=check;
}
}
Class: org.apache.ambari.server.checks.YarnTimelineServerStatePreservingCheckTest InternalCallVerifier BooleanVerifier
@SuppressWarnings("serial") @Test public void testIsApplicableMinimumStackVersion() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getServices()).thenReturn(new HashMap(){
{
put("YARN",null);
}
}
);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("MYSTACK-12.2"));
ClusterVersionEntity clusterVersionEntity=Mockito.mock(ClusterVersionEntity.class);
Mockito.when(cluster.getCurrentClusterVersion()).thenReturn(clusterVersionEntity);
RepositoryVersionEntity repositoryVersionEntity=Mockito.mock(RepositoryVersionEntity.class);
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(m_clusters.getCluster("c1")).thenReturn(cluster);
Map checkProperties=new HashMap();
checkProperties.put("min-applicable-stack-version","HDP-2.2.4.2");
PrerequisiteCheckConfig prerequisiteCheckConfig=Mockito.mock(PrerequisiteCheckConfig.class);
Mockito.when(prerequisiteCheckConfig.getCheckProperties(m_check.getClass().getName())).thenReturn(checkProperties);
PrereqCheckRequest request=new PrereqCheckRequest("c1");
request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.3.0.1");
boolean isApplicable=m_check.isApplicable(request);
Assert.assertTrue(isApplicable);
}
InternalCallVerifier BooleanVerifier
/**
* @throws Exception
*/
@Test public void testIsApplicable() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(m_clusters.getCluster("cluster")).thenReturn(cluster);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.2"));
Map services=new HashMap();
Mockito.when(cluster.getServices()).thenReturn(services);
ClusterVersionEntity clusterVersionEntity=Mockito.mock(ClusterVersionEntity.class);
Mockito.when(cluster.getCurrentClusterVersion()).thenReturn(clusterVersionEntity);
RepositoryVersionEntity repositoryVersionEntity=Mockito.mock(RepositoryVersionEntity.class);
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.4.2");
Map checkProperties=new HashMap();
checkProperties.put("min-applicable-stack-version","HDP-2.2.4.2");
PrerequisiteCheckConfig prerequisiteCheckConfig=Mockito.mock(PrerequisiteCheckConfig.class);
Mockito.when(prerequisiteCheckConfig.getCheckProperties(m_check.getClass().getName())).thenReturn(checkProperties);
PrereqCheckRequest request=new PrereqCheckRequest("cluster");
request.setRepositoryVersion("2.3.0.0");
request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
Assert.assertFalse(m_check.isApplicable(request));
services.put("YARN",Mockito.mock(Service.class));
Assert.assertTrue(m_check.isApplicable(request));
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.0.0");
Assert.assertFalse(m_check.isApplicable(request));
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.4.2");
Assert.assertTrue(m_check.isApplicable(request));
}
InternalCallVerifier BooleanVerifier
@SuppressWarnings("serial") @Test public void testIsApplicableMinimumHDPStackVersion() throws Exception {
final Cluster cluster=Mockito.mock(Cluster.class);
Mockito.when(cluster.getClusterId()).thenReturn(1L);
Mockito.when(cluster.getServices()).thenReturn(new HashMap(){
{
put("YARN",null);
}
}
);
Mockito.when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.2"));
ClusterVersionEntity clusterVersionEntity=Mockito.mock(ClusterVersionEntity.class);
Mockito.when(cluster.getCurrentClusterVersion()).thenReturn(clusterVersionEntity);
RepositoryVersionEntity repositoryVersionEntity=Mockito.mock(RepositoryVersionEntity.class);
Mockito.when(clusterVersionEntity.getRepositoryVersion()).thenReturn(repositoryVersionEntity);
Mockito.when(m_clusters.getCluster("c1")).thenReturn(cluster);
Map checkProperties=new HashMap();
checkProperties.put("min-applicable-stack-version","HDP-2.2.4.2");
PrerequisiteCheckConfig prerequisiteCheckConfig=Mockito.mock(PrerequisiteCheckConfig.class);
Mockito.when(prerequisiteCheckConfig.getCheckProperties(m_check.getClass().getName())).thenReturn(checkProperties);
PrereqCheckRequest request=new PrereqCheckRequest("c1");
request.setPrerequisiteCheckConfig(prerequisiteCheckConfig);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.1.1.1");
boolean isApplicable=m_check.isApplicable(request);
Assert.assertFalse(isApplicable);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.4.1");
isApplicable=m_check.isApplicable(request);
Assert.assertFalse(isApplicable);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.4.2");
isApplicable=m_check.isApplicable(request);
Assert.assertTrue(isApplicable);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.2.4.4");
isApplicable=m_check.isApplicable(request);
Assert.assertTrue(isApplicable);
Mockito.when(repositoryVersionEntity.getVersion()).thenReturn("2.3.1.1");
isApplicable=m_check.isApplicable(request);
Assert.assertTrue(isApplicable);
}
Class: org.apache.ambari.server.configuration.ConfigurationTest InternalCallVerifier NullVerifier
@Test public void testGetLdapServerProperties_WrongManagerPassword() throws Exception {
final Properties ambariProperties=new Properties();
ambariProperties.setProperty(Configuration.LDAP_MANAGER_PASSWORD_KEY,"somePassword");
final Configuration configuration=new Configuration(ambariProperties);
final LdapServerProperties ldapProperties=configuration.getLdapServerProperties();
Assert.assertNull(ldapProperties.getManagerPassword());
}
InternalCallVerifier BooleanVerifier
@Test public void testExperimentalConcurrentStageProcessing() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
Assert.assertFalse(configuration.isExperimentalConcurrentStageProcessingEnabled());
ambariProperties.setProperty(Configuration.EXPERIMENTAL_CONCURRENCY_STAGE_PROCESSING_ENABLED,Boolean.TRUE.toString());
Assert.assertTrue(configuration.isExperimentalConcurrentStageProcessingEnabled());
}
InternalCallVerifier EqualityVerifier
@Test public void testLoadSSLParams_unencrypted() throws IOException {
Properties ambariProperties=new Properties();
String unencrypted="fake-unencrypted-password";
String encrypted="fake-encrypted-password";
ambariProperties.setProperty(Configuration.SSL_TRUSTSTORE_PASSWORD_KEY,unencrypted);
Configuration conf=spy(new Configuration(ambariProperties));
doReturn(null).when(conf).readPasswordFromStore(anyString());
conf.loadSSLParams();
Assert.assertEquals(System.getProperty(conf.JAVAX_SSL_TRUSTSTORE_PASSWORD,"unknown"),unencrypted);
}
InternalCallVerifier EqualityVerifier
@Test public void testConnectionPoolingProperties() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
Assert.assertEquals(ConnectionPoolType.INTERNAL,configuration.getConnectionPoolType());
Assert.assertEquals(5,configuration.getConnectionPoolAcquisitionSize());
Assert.assertEquals(7200,configuration.getConnectionPoolIdleTestInternval());
Assert.assertEquals(0,configuration.getConnectionPoolMaximumAge());
Assert.assertEquals(0,configuration.getConnectionPoolMaximumExcessIdle());
Assert.assertEquals(14400,configuration.getConnectionPoolMaximumIdle());
Assert.assertEquals(32,configuration.getConnectionPoolMaximumSize());
Assert.assertEquals(5,configuration.getConnectionPoolMinimumSize());
Assert.assertEquals(30,configuration.getConnectionPoolAcquisitionRetryAttempts());
Assert.assertEquals(1000,configuration.getConnectionPoolAcquisitionRetryDelay());
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL,ConnectionPoolType.C3P0.getName());
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_MIN_SIZE,"1");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_MAX_SIZE,"2");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_AQUISITION_SIZE,"3");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_MAX_AGE,"4");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_MAX_IDLE_TIME,"5");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_MAX_IDLE_TIME_EXCESS,"6");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_IDLE_TEST_INTERVAL,"7");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_ACQUISITION_RETRY_ATTEMPTS,"8");
ambariProperties.setProperty(Configuration.SERVER_JDBC_CONNECTION_POOL_ACQUISITION_RETRY_DELAY,"9");
Assert.assertEquals(ConnectionPoolType.C3P0,configuration.getConnectionPoolType());
Assert.assertEquals(3,configuration.getConnectionPoolAcquisitionSize());
Assert.assertEquals(7,configuration.getConnectionPoolIdleTestInternval());
Assert.assertEquals(4,configuration.getConnectionPoolMaximumAge());
Assert.assertEquals(6,configuration.getConnectionPoolMaximumExcessIdle());
Assert.assertEquals(5,configuration.getConnectionPoolMaximumIdle());
Assert.assertEquals(2,configuration.getConnectionPoolMaximumSize());
Assert.assertEquals(1,configuration.getConnectionPoolMinimumSize());
Assert.assertEquals(8,configuration.getConnectionPoolAcquisitionRetryAttempts());
Assert.assertEquals(9,configuration.getConnectionPoolAcquisitionRetryDelay());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetExecutionSchedulerWait() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
Assert.assertEquals(new Long(1000L),configuration.getExecutionSchedulerWait());
ambariProperties.setProperty(Configuration.EXECUTION_SCHEDULER_WAIT_KEY,"5");
Assert.assertEquals(new Long(5000L),configuration.getExecutionSchedulerWait());
ambariProperties.setProperty(Configuration.EXECUTION_SCHEDULER_WAIT_KEY,"100");
Assert.assertEquals(new Long(60000L),configuration.getExecutionSchedulerWait());
ambariProperties.setProperty(Configuration.EXECUTION_SCHEDULER_WAIT_KEY,"100m");
Assert.assertEquals(new Long(1000L),configuration.getExecutionSchedulerWait());
}
InternalCallVerifier EqualityVerifier
@Test public void testLoadSSLParams_encrypted() throws IOException {
Properties ambariProperties=new Properties();
String unencrypted="fake-unencrypted-password";
String encrypted="fake-encrypted-password";
ambariProperties.setProperty(Configuration.SSL_TRUSTSTORE_PASSWORD_KEY,unencrypted);
Configuration conf=spy(new Configuration(ambariProperties));
doReturn(encrypted).when(conf).readPasswordFromStore(anyString());
conf.loadSSLParams();
Assert.assertEquals(System.getProperty(conf.JAVAX_SSL_TRUSTSTORE_PASSWORD,"unknown"),encrypted);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetLdapServerProperties() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
final File passwordFile=temp.newFile("ldap-password.dat");
final FileOutputStream fos=new FileOutputStream(passwordFile);
fos.write("ambaritest\r\n".getBytes());
fos.close();
final String passwordFilePath=temp.getRoot().getAbsolutePath() + File.separator + "ldap-password.dat";
ambariProperties.setProperty(Configuration.LDAP_PRIMARY_URL_KEY,"1");
ambariProperties.setProperty(Configuration.LDAP_SECONDARY_URL_KEY,"2");
ambariProperties.setProperty(Configuration.LDAP_USE_SSL_KEY,"true");
ambariProperties.setProperty(Configuration.LDAP_BIND_ANONYMOUSLY_KEY,"true");
ambariProperties.setProperty(Configuration.LDAP_MANAGER_DN_KEY,"5");
ambariProperties.setProperty(Configuration.LDAP_MANAGER_PASSWORD_KEY,passwordFilePath);
ambariProperties.setProperty(Configuration.LDAP_BASE_DN_KEY,"7");
ambariProperties.setProperty(Configuration.LDAP_USERNAME_ATTRIBUTE_KEY,"8");
ambariProperties.setProperty(Configuration.LDAP_USER_BASE_KEY,"9");
ambariProperties.setProperty(Configuration.LDAP_USER_OBJECT_CLASS_KEY,"10");
ambariProperties.setProperty(Configuration.LDAP_GROUP_BASE_KEY,"11");
ambariProperties.setProperty(Configuration.LDAP_GROUP_OBJECT_CLASS_KEY,"12");
ambariProperties.setProperty(Configuration.LDAP_GROUP_MEMEBERSHIP_ATTR_KEY,"13");
ambariProperties.setProperty(Configuration.LDAP_GROUP_NAMING_ATTR_KEY,"14");
ambariProperties.setProperty(Configuration.LDAP_ADMIN_GROUP_MAPPING_RULES_KEY,"15");
ambariProperties.setProperty(Configuration.LDAP_GROUP_SEARCH_FILTER_KEY,"16");
final LdapServerProperties ldapProperties=configuration.getLdapServerProperties();
Assert.assertEquals("1",ldapProperties.getPrimaryUrl());
Assert.assertEquals("2",ldapProperties.getSecondaryUrl());
Assert.assertEquals(true,ldapProperties.isUseSsl());
Assert.assertEquals(true,ldapProperties.isAnonymousBind());
Assert.assertEquals("5",ldapProperties.getManagerDn());
Assert.assertEquals("ambaritest",ldapProperties.getManagerPassword());
Assert.assertEquals("7",ldapProperties.getBaseDN());
Assert.assertEquals("8",ldapProperties.getUsernameAttribute());
Assert.assertEquals("9",ldapProperties.getUserBase());
Assert.assertEquals("10",ldapProperties.getUserObjectClass());
Assert.assertEquals("11",ldapProperties.getGroupBase());
Assert.assertEquals("12",ldapProperties.getGroupObjectClass());
Assert.assertEquals("13",ldapProperties.getGroupMembershipAttr());
Assert.assertEquals("14",ldapProperties.getGroupNamingAttr());
Assert.assertEquals("15",ldapProperties.getAdminGroupMappingRules());
Assert.assertEquals("16",ldapProperties.getGroupSearchFilter());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAmbariProperties() throws Exception {
Properties ambariProperties=new Properties();
ambariProperties.setProperty("name","value");
Configuration conf=new Configuration(ambariProperties);
mockStatic(Configuration.class);
Method[] methods=MemberMatcher.methods(Configuration.class,"readConfigFile");
PowerMock.expectPrivate(Configuration.class,methods[0]).andReturn(ambariProperties);
replayAll();
Map props=conf.getAmbariProperties();
verifyAll();
Assert.assertEquals("value",props.get("name"));
}
InternalCallVerifier EqualityVerifier
@Test() public void testServerPoolSizes(){
Properties ambariProperties=new Properties();
Configuration conf=new Configuration(ambariProperties);
Assert.assertEquals(25,conf.getClientThreadPoolSize());
Assert.assertEquals(25,conf.getAgentThreadPoolSize());
Assert.assertEquals(10,conf.getViewExtractionThreadPoolCoreSize());
Assert.assertEquals(20,conf.getViewExtractionThreadPoolMaxSize());
Assert.assertEquals(100000L,conf.getViewExtractionThreadPoolTimeout());
ambariProperties=new Properties();
ambariProperties.setProperty("client.threadpool.size.max","4");
ambariProperties.setProperty("agent.threadpool.size.max","82");
ambariProperties.setProperty("view.extraction.threadpool.size.core","83");
ambariProperties.setProperty("view.extraction.threadpool.size.max","56");
ambariProperties.setProperty("view.extraction.threadpool.timeout","6000");
conf=new Configuration(ambariProperties);
Assert.assertEquals(4,conf.getClientThreadPoolSize());
Assert.assertEquals(82,conf.getAgentThreadPoolSize());
Assert.assertEquals(83,conf.getViewExtractionThreadPoolCoreSize());
Assert.assertEquals(56,conf.getViewExtractionThreadPoolMaxSize());
Assert.assertEquals(6000L,conf.getViewExtractionThreadPoolTimeout());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAgentPackageParallelCommandsLimit() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
Assert.assertEquals(100,configuration.getAgentPackageParallelCommandsLimit());
ambariProperties.setProperty(Configuration.AGENT_PACKAGE_PARALLEL_COMMANDS_LIMIT_KEY,"5");
Assert.assertEquals(5,configuration.getAgentPackageParallelCommandsLimit());
ambariProperties.setProperty(Configuration.AGENT_PACKAGE_PARALLEL_COMMANDS_LIMIT_KEY,"0");
Assert.assertEquals(1,configuration.getAgentPackageParallelCommandsLimit());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetClientHTTPSSettings() throws IOException {
File passFile=File.createTempFile("https.pass.","txt");
passFile.deleteOnExit();
String password="pass12345";
FileUtils.writeStringToFile(passFile,password);
Properties ambariProperties=new Properties();
ambariProperties.setProperty(Configuration.API_USE_SSL,"true");
ambariProperties.setProperty(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY,passFile.getParent());
ambariProperties.setProperty(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY,passFile.getName());
String oneWayPort=RandomStringUtils.randomNumeric(4);
String twoWayPort=RandomStringUtils.randomNumeric(4);
ambariProperties.setProperty(Configuration.SRVR_TWO_WAY_SSL_PORT_KEY,twoWayPort.toString());
ambariProperties.setProperty(Configuration.SRVR_ONE_WAY_SSL_PORT_KEY,oneWayPort.toString());
Configuration conf=new Configuration(ambariProperties);
Assert.assertTrue(conf.getApiSSLAuthentication());
Assert.assertFalse(conf.getConfigsMap().get(Configuration.KSTR_NAME_KEY).equals(conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_KSTR_NAME_KEY)));
Assert.assertFalse(conf.getConfigsMap().get(Configuration.SRVR_CRT_NAME_KEY).equals(conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_CRT_NAME_KEY)));
Assert.assertEquals("keystore.p12",conf.getConfigsMap().get(Configuration.KSTR_NAME_KEY));
Assert.assertEquals("PKCS12",conf.getConfigsMap().get(Configuration.KSTR_TYPE_KEY));
Assert.assertEquals("keystore.p12",conf.getConfigsMap().get(Configuration.TSTR_NAME_KEY));
Assert.assertEquals("PKCS12",conf.getConfigsMap().get(Configuration.TSTR_TYPE_KEY));
Assert.assertEquals("https.keystore.p12",conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_KSTR_NAME_KEY));
Assert.assertEquals("PKCS12",conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY));
Assert.assertEquals("https.keystore.p12",conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_TSTR_NAME_KEY));
Assert.assertEquals("PKCS12",conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_TSTR_TYPE_KEY));
Assert.assertEquals(passFile.getName(),conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY));
Assert.assertEquals(password,conf.getConfigsMap().get(Configuration.CLIENT_API_SSL_CRT_PASS_KEY));
Assert.assertEquals(Integer.parseInt(twoWayPort),conf.getTwoWayAuthPort());
Assert.assertEquals(Integer.parseInt(oneWayPort),conf.getOneWayAuthPort());
}
InternalCallVerifier EqualityVerifier
@Test public void testPropertyProviderThreadPoolSizes() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
Assert.assertEquals(2 * Runtime.getRuntime().availableProcessors(),configuration.getPropertyProvidersThreadPoolCoreSize());
Assert.assertEquals(4 * Runtime.getRuntime().availableProcessors(),configuration.getPropertyProvidersThreadPoolMaxSize());
ambariProperties.setProperty(Configuration.PROPERTY_PROVIDER_THREADPOOL_MAX_SIZE_KEY,"44");
ambariProperties.setProperty(Configuration.PROPERTY_PROVIDER_THREADPOOL_CORE_SIZE_KEY,"22");
Assert.assertEquals(22,configuration.getPropertyProvidersThreadPoolCoreSize());
Assert.assertEquals(44,configuration.getPropertyProvidersThreadPoolMaxSize());
}
InternalCallVerifier EqualityVerifier
@Test() public void testGetDefaultAgentTaskTimeout(){
Properties ambariProperties=new Properties();
Configuration conf=new Configuration(ambariProperties);
Assert.assertEquals("900",conf.getDefaultAgentTaskTimeout(false));
Assert.assertEquals("1800",conf.getDefaultAgentTaskTimeout(true));
ambariProperties=new Properties();
ambariProperties.setProperty("agent.task.timeout","4");
ambariProperties.setProperty("agent.package.install.task.timeout","82");
conf=new Configuration(ambariProperties);
Assert.assertEquals("4",conf.getDefaultAgentTaskTimeout(false));
Assert.assertEquals("82",conf.getDefaultAgentTaskTimeout(true));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAlertCaching() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
Assert.assertFalse(configuration.isAlertCacheEnabled());
ambariProperties.setProperty(Configuration.ALERTS_CACHE_ENABLED,Boolean.TRUE.toString());
ambariProperties.setProperty(Configuration.ALERTS_CACHE_FLUSH_INTERVAL,"60");
ambariProperties.setProperty(Configuration.ALERTS_CACHE_SIZE,"1000");
Assert.assertTrue(configuration.isAlertCacheEnabled());
Assert.assertEquals(60,configuration.getAlertCacheFlushInterval());
Assert.assertEquals(1000,configuration.getAlertCacheSize());
}
InternalCallVerifier EqualityVerifier
@Test public void testDatabaseType() throws Exception {
final Properties ambariProperties=new Properties();
final Configuration configuration=new Configuration(ambariProperties);
ambariProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:oracle://server");
Assert.assertEquals(DatabaseType.ORACLE,configuration.getDatabaseType());
ambariProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:postgres://server");
Assert.assertEquals(DatabaseType.POSTGRES,configuration.getDatabaseType());
ambariProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:mysql://server");
Assert.assertEquals(DatabaseType.MYSQL,configuration.getDatabaseType());
ambariProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:derby://server");
Assert.assertEquals(DatabaseType.DERBY,configuration.getDatabaseType());
ambariProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:sqlserver://server");
Assert.assertEquals(DatabaseType.SQL_SERVER,configuration.getDatabaseType());
}
Class: org.apache.ambari.server.controller.ActionRequestTest InternalCallVerifier EqualityVerifier
@Test public void testBasicGetAndSet(){
ActionRequest adr1=new ActionRequest("a1","SYSTEM","fileName","HDFS","DATANODE","Desc1","Any","100");
Assert.assertEquals("a1",adr1.getActionName());
Assert.assertEquals("SYSTEM",adr1.getActionType());
Assert.assertEquals("fileName",adr1.getInputs());
Assert.assertEquals("HDFS",adr1.getTargetService());
Assert.assertEquals("DATANODE",adr1.getTargetComponent());
Assert.assertEquals("Desc1",adr1.getDescription());
Assert.assertEquals("Any",adr1.getTargetType());
Assert.assertEquals("100",adr1.getDefaultTimeout());
adr1.setDescription("Desc2");
adr1.setActionType("USER");
Assert.assertEquals("Desc2",adr1.getDescription());
Assert.assertEquals("USER",adr1.getActionType());
}
Class: org.apache.ambari.server.controller.ActionResponseTest InternalCallVerifier EqualityVerifier
@Test public void testBasicGetAndSet(){
ActionResponse r1=new ActionResponse("a1","SYSTEM","fileName","HDFS","DATANODE","Desc1","Any","100");
Assert.assertEquals("a1",r1.getActionName());
Assert.assertEquals("SYSTEM",r1.getActionType());
Assert.assertEquals("fileName",r1.getInputs());
Assert.assertEquals("HDFS",r1.getTargetService());
Assert.assertEquals("DATANODE",r1.getTargetComponent());
Assert.assertEquals("Desc1",r1.getDescription());
Assert.assertEquals("Any",r1.getTargetType());
Assert.assertEquals("100",r1.getDefaultTimeout());
}
Class: org.apache.ambari.server.controller.AmbariCustomCommandExecutionHelperTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostsFilterHealthy() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
createClusterFixture("HDP-2.0.6");
Map requestProperties=new HashMap(){
{
put("context","Restart all components for GANGLIA");
put("operation_level/level","SERVICE");
put("operation_level/service_name","GANGLIA");
put("operation_level/cluster_name","c1");
}
}
;
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1","RESTART",null,Arrays.asList(new RequestResourceFilter("GANGLIA","GANGLIA_SERVER",Collections.singletonList("c6401")),new RequestResourceFilter("GANGLIA","GANGLIA_MONITOR",Collections.singletonList("c6401")),new RequestResourceFilter("GANGLIA","GANGLIA_MONITOR",Collections.singletonList("c6402"))),new RequestOperationLevel(Resource.Type.Service,"c1","GANGLIA",null,null),new HashMap(){
{
}
}
,false);
controller.createAction(actionRequest,requestProperties);
Mockito.verify(am,Mockito.times(1)).sendActions(requestCapture.capture(),any(ExecuteActionRequest.class));
Request request=requestCapture.getValue();
Assert.assertNotNull(request);
Assert.assertNotNull(request.getStages());
Assert.assertEquals(1,request.getStages().size());
Stage stage=request.getStages().iterator().next();
Assert.assertEquals(2,stage.getHostRoleCommands().size());
}
InternalCallVerifier BooleanVerifier
@Test public void testIsTopologyRefreshRequired() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
AmbariCustomCommandExecutionHelper helper=injector.getInstance(AmbariCustomCommandExecutionHelper.class);
createClusterFixture("HDP-2.1.1");
Assert.assertTrue(helper.isTopologyRefreshRequired("START","c1","HDFS"));
Assert.assertTrue(helper.isTopologyRefreshRequired("RESTART","c1","HDFS"));
Assert.assertFalse(helper.isTopologyRefreshRequired("STOP","c1","HDFS"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@SuppressWarnings("serial") @Test public void testRefreshQueueCustomCommand() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
createClusterFixture("HDP-2.0.6");
Map requestProperties=new HashMap(){
{
put(REQUEST_CONTEXT_PROPERTY,"Refresh YARN Capacity Scheduler");
put("command","REFRESHQUEUES");
}
}
;
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1","REFRESHQUEUES",new HashMap(){
{
put("forceRefreshConfigTags","capacity-scheduler");
}
}
,false);
actionRequest.getResourceFilters().add(new RequestResourceFilter("YARN","RESOURCEMANAGER",Collections.singletonList("c6401")));
controller.createAction(actionRequest,requestProperties);
Mockito.verify(am,Mockito.times(1)).sendActions(requestCapture.capture(),any(ExecuteActionRequest.class));
Request request=requestCapture.getValue();
Assert.assertNotNull(request);
Assert.assertNotNull(request.getStages());
Assert.assertEquals(1,request.getStages().size());
Stage stage=request.getStages().iterator().next();
Assert.assertEquals(1,stage.getHosts().size());
List commands=stage.getExecutionCommands("c6401");
Assert.assertEquals(1,commands.size());
ExecutionCommand command=commands.get(0).getExecutionCommand();
Assert.assertNotNull(command.getForceRefreshConfigTags());
Assert.assertEquals(1,command.getForceRefreshConfigTags().size());
Assert.assertEquals("capacity-scheduler",command.getForceRefreshConfigTags().iterator().next());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostsFilterUnhealthyHost() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
createClusterFixture("HDP-2.0.6");
clusters.getHost("c6402").setState(HostState.HEARTBEAT_LOST);
Map requestProperties=new HashMap(){
{
put("context","Restart all components for GANGLIA");
put("operation_level/level","SERVICE");
put("operation_level/service_name","GANGLIA");
put("operation_level/cluster_name","c1");
}
}
;
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1","RESTART",null,Arrays.asList(new RequestResourceFilter("GANGLIA","GANGLIA_SERVER",Collections.singletonList("c6401")),new RequestResourceFilter("GANGLIA","GANGLIA_MONITOR",Collections.singletonList("c6401")),new RequestResourceFilter("GANGLIA","GANGLIA_MONITOR",Collections.singletonList("c6402"))),new RequestOperationLevel(Resource.Type.Service,"c1","GANGLIA",null,null),new HashMap(){
{
}
}
,false);
controller.createAction(actionRequest,requestProperties);
Mockito.verify(am,Mockito.times(1)).sendActions(requestCapture.capture(),any(ExecuteActionRequest.class));
Request request=requestCapture.getValue();
Assert.assertNotNull(request);
Assert.assertNotNull(request.getStages());
Assert.assertEquals(1,request.getStages().size());
Stage stage=request.getStages().iterator().next();
Assert.assertEquals(1,stage.getHostRoleCommands().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostsFilterUnhealthyComponent() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
createClusterFixture("HDP-2.0.6");
clusters.getCluster("c1").getService("GANGLIA").getServiceComponent("GANGLIA_MONITOR").getServiceComponentHost("c6402").setState(State.UNKNOWN);
Map requestProperties=new HashMap(){
{
put("context","Restart all components for GANGLIA");
put("operation_level/level","SERVICE");
put("operation_level/service_name","GANGLIA");
put("operation_level/cluster_name","c1");
}
}
;
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1","RESTART",null,Arrays.asList(new RequestResourceFilter("GANGLIA","GANGLIA_SERVER",Collections.singletonList("c6401")),new RequestResourceFilter("GANGLIA","GANGLIA_MONITOR",Collections.singletonList("c6401")),new RequestResourceFilter("GANGLIA","GANGLIA_MONITOR",Collections.singletonList("c6402"))),new RequestOperationLevel(Resource.Type.Host,"c1","GANGLIA",null,null),new HashMap(){
{
}
}
,false);
controller.createAction(actionRequest,requestProperties);
Mockito.verify(am,Mockito.times(1)).sendActions(requestCapture.capture(),any(ExecuteActionRequest.class));
Request request=requestCapture.getValue();
Assert.assertNotNull(request);
Assert.assertNotNull(request.getStages());
Assert.assertEquals(1,request.getStages().size());
Stage stage=request.getStages().iterator().next();
Assert.assertEquals(1,stage.getHostRoleCommands().size());
}
Class: org.apache.ambari.server.controller.AmbariHandlerListTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAddViewInstance() throws Exception {
ViewInstanceEntity viewInstanceEntity=ViewInstanceEntityTest.getViewInstanceEntity();
final WebAppContext handler=createNiceMock(WebAppContext.class);
Server server=createNiceMock(Server.class);
expect(handler.getServer()).andReturn(server);
handler.setServer(null);
Capture securityHeaderFilterCapture=new Capture();
Capture persistFilterCapture=new Capture();
Capture securityFilterCapture=new Capture();
handler.addFilter(capture(securityHeaderFilterCapture),eq("/*"),eq(AmbariServer.DISPATCHER_TYPES));
handler.addFilter(capture(persistFilterCapture),eq("/*"),eq(AmbariServer.DISPATCHER_TYPES));
handler.addFilter(capture(securityFilterCapture),eq("/*"),eq(AmbariServer.DISPATCHER_TYPES));
handler.setAllowNullPathInfo(true);
replay(handler,server);
AmbariHandlerList handlerList=getAmbariHandlerList(handler);
handlerList.addViewInstance(viewInstanceEntity);
ArrayList handlers=new ArrayList(Arrays.asList(handlerList.getHandlers()));
Assert.assertTrue(handlers.contains(handler));
Assert.assertEquals(ambariViewsSecurityHeaderFilter,securityHeaderFilterCapture.getValue().getFilter());
Assert.assertEquals(persistFilter,persistFilterCapture.getValue().getFilter());
Assert.assertEquals(springSecurityFilter,securityFilterCapture.getValue().getFilter());
verify(handler,server);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testRemoveViewInstance() throws Exception {
ViewInstanceEntity viewInstanceEntity=ViewInstanceEntityTest.getViewInstanceEntity();
final WebAppContext handler=createNiceMock(WebAppContext.class);
Server server=createNiceMock(Server.class);
expect(handler.getServer()).andReturn(server);
handler.setServer(null);
replay(handler,server);
AmbariHandlerList handlerList=getAmbariHandlerList(handler);
handlerList.addViewInstance(viewInstanceEntity);
ArrayList handlers=new ArrayList(Arrays.asList(handlerList.getHandlers()));
Assert.assertTrue(handlers.contains(handler));
handlerList.removeViewInstance(viewInstanceEntity);
handlers=new ArrayList(Arrays.asList(handlerList.getHandlers()));
Assert.assertFalse(handlers.contains(handler));
verify(handler,server);
}
Class: org.apache.ambari.server.controller.AmbariManagementControllerImplTest InternalCallVerifier EqualityVerifier
@Test public void testCreateDefaultHostParams() throws Exception {
String clusterName="c1";
String SOME_STACK_NAME="SomeStackName";
String SOME_STACK_VERSION="1.0";
String MYSQL_JAR="MYSQL_JAR";
String JAVA_HOME="javaHome";
String JDK_NAME="jdkName";
String JCE_NAME="jceName";
String OJDBC_JAR_NAME="OjdbcJarName";
String SERVER_DB_NAME="ServerDBName";
ActionManager manager=createNiceMock(ActionManager.class);
StackId stackId=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
Injector injector=createNiceMock(Injector.class);
Configuration configuration=createNiceMock(Configuration.class);
ClusterVersionDAO clusterVersionDAO=createNiceMock(ClusterVersionDAO.class);
ClusterVersionEntity clusterVersionEntity=createNiceMock(ClusterVersionEntity.class);
RepositoryVersionEntity repositoryVersionEntity=createNiceMock(RepositoryVersionEntity.class);
expect(cluster.getClusterName()).andReturn(clusterName);
expect(cluster.getDesiredStackVersion()).andReturn(stackId);
expect(stackId.getStackName()).andReturn(SOME_STACK_NAME).anyTimes();
expect(stackId.getStackVersion()).andReturn(SOME_STACK_VERSION).anyTimes();
expect(configuration.getMySQLJarName()).andReturn(MYSQL_JAR);
expect(configuration.getJavaHome()).andReturn(JAVA_HOME);
expect(configuration.getJDKName()).andReturn(JDK_NAME);
expect(configuration.getJCEName()).andReturn(JCE_NAME);
expect(configuration.getOjdbcJarName()).andReturn(OJDBC_JAR_NAME);
expect(configuration.getServerDBName()).andReturn(SERVER_DB_NAME);
expect(configuration.getJavaVersion()).andReturn(8);
expect(configuration.areHostsSysPrepped()).andReturn("true");
expect(clusterVersionDAO.findByClusterAndStateCurrent(clusterName)).andReturn(clusterVersionEntity).anyTimes();
expect(clusterVersionEntity.getRepositoryVersion()).andReturn(repositoryVersionEntity).anyTimes();
expect(repositoryVersionEntity.getVersion()).andReturn("1234").anyTimes();
replay(manager,clusters,cluster,injector,stackId,configuration,clusterVersionDAO,clusterVersionEntity,repositoryVersionEntity);
AmbariManagementControllerImpl ambariManagementControllerImpl=createMockBuilder(AmbariManagementControllerImpl.class).addMockedMethod("getRcaParameters").withConstructor(manager,clusters,injector).createNiceMock();
expect(ambariManagementControllerImpl.getRcaParameters()).andReturn(new HashMap());
replay(ambariManagementControllerImpl);
Class> amciClass=AmbariManagementControllerImpl.class;
Field f=amciClass.getDeclaredField("configs");
f.setAccessible(true);
f.set(ambariManagementControllerImpl,configuration);
AmbariCustomCommandExecutionHelper helper=new AmbariCustomCommandExecutionHelper();
Class> helperClass=AmbariCustomCommandExecutionHelper.class;
f=helperClass.getDeclaredField("managementController");
f.setAccessible(true);
f.set(helper,ambariManagementControllerImpl);
f=helperClass.getDeclaredField("configs");
f.setAccessible(true);
f.set(helper,configuration);
f=helperClass.getDeclaredField("clusterVersionDAO");
f.setAccessible(true);
f.set(helper,clusterVersionDAO);
Map defaultHostParams=helper.createDefaultHostParams(cluster);
assertEquals(defaultHostParams.size(),13);
assertEquals(defaultHostParams.get(DB_DRIVER_FILENAME),MYSQL_JAR);
assertEquals(defaultHostParams.get(STACK_NAME),SOME_STACK_NAME);
assertEquals(defaultHostParams.get(STACK_VERSION),SOME_STACK_VERSION);
assertEquals("true",defaultHostParams.get(HOST_SYS_PREPPED));
assertEquals("8",defaultHostParams.get(JAVA_VERSION));
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
@Test public void testGetHostComponents___OR_Predicate_HostNotFoundException_hostProvidedInURL() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
Cluster cluster=createNiceMock(Cluster.class);
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
ServiceComponentHostRequest request2=new ServiceComponentHostRequest("cluster1",null,"component2","host1",null);
ServiceComponentHostRequest request3=new ServiceComponentHostRequest("cluster1",null,"component3","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(clusters.getClustersForHost("host1")).andThrow(new HostNotFoundException("host1"));
replay(maintHelper,injector,clusters,cluster,stack,ambariMetaInfo);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
try {
controller.getHostComponents(setRequests);
fail("expected exception");
}
catch ( AmbariException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(injector,clusters,cluster,stack,ambariMetaInfo);
}
InternalCallVerifier EqualityVerifier
@Test public void testgetAmbariServerURI() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
replay(injector);
AmbariManagementControllerImpl controller=new AmbariManagementControllerImpl(null,null,injector);
class AmbariConfigsSetter {
public void setConfigs( AmbariManagementController controller, String masterProtocol, String masterHostname, Integer masterPort) throws Exception {
Class> c=controller.getClass();
Field f=c.getDeclaredField("masterProtocol");
f.setAccessible(true);
Field modifiersField=Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f,f.getModifiers() & ~Modifier.FINAL);
f.set(controller,masterProtocol);
f=c.getDeclaredField("masterHostname");
f.setAccessible(true);
modifiersField=Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f,f.getModifiers() & ~Modifier.FINAL);
f.set(controller,masterHostname);
f=c.getDeclaredField("masterPort");
f.setAccessible(true);
modifiersField=Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(f,f.getModifiers() & ~Modifier.FINAL);
f.set(controller,masterPort);
}
}
AmbariConfigsSetter ambariConfigsSetter=new AmbariConfigsSetter();
ambariConfigsSetter.setConfigs(controller,"http","hostname",8080);
assertEquals("http://hostname:8080/jdk_path",controller.getAmbariServerURI("/jdk_path"));
ambariConfigsSetter.setConfigs(controller,"https","somesecuredhost",8443);
assertEquals("https://somesecuredhost:8443/mysql_path",controller.getAmbariServerURI("/mysql_path"));
ambariConfigsSetter.setConfigs(controller,"https","othersecuredhost",8443);
assertEquals("https://othersecuredhost:8443/oracle/ojdbc/",controller.getAmbariServerURI("/oracle/ojdbc/"));
ambariConfigsSetter.setConfigs(controller,"http","hostname",8080);
assertEquals("http://hostname:8080/jdk_path?query",controller.getAmbariServerURI("/jdk_path?query"));
verify(injector);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetHostComponents___OR_Predicate_HostNotFoundException_hostProvidedInQuery() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
final Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
Service service2=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
ServiceComponent component3=createNiceMock(ServiceComponent.class);
final ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
final ServiceComponentHost componentHost2=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1",null,null);
ServiceComponentHostRequest request2=new ServiceComponentHostRequest("cluster1",null,"component2","host2",null);
ServiceComponentHostRequest request3=new ServiceComponentHostRequest("cluster1",null,"component3",null,null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",host);
}
}
).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stack).anyTimes();
expect(stack.getStackName()).andReturn("stackName").anyTimes();
expect(stack.getStackVersion()).andReturn("stackVersion").anyTimes();
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1");
expect(component.getServiceComponentHosts()).andReturn(Collections.singletonMap("foo",componentHost1));
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost1.getHostName()).andReturn("host1");
expect(clusters.getClustersForHost("host2")).andThrow(new HostNotFoundException("host2"));
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component3")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component3")).andReturn(component3);
expect(component3.getName()).andReturn("component3");
expect(component3.getServiceComponentHosts()).andReturn(Collections.singletonMap("foo",componentHost2));
expect(componentHost2.convertToResponse()).andReturn(response2);
expect(componentHost2.getHostName()).andReturn("host1");
replay(maintHelper,injector,clusters,cluster,host,stack,ambariMetaInfo,service,service2,component,component2,component3,componentHost1,componentHost2,response1,response2);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
Assert.assertNotNull(setResponses);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,host,stack,ambariMetaInfo,service,service2,component,component2,component3,componentHost1,componentHost2,response1,response2);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostComponents() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
final Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
final ServiceComponentHost componentHost=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(componentHost)).andReturn(MaintenanceState.OFF).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster));
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",host);
}
}
).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stack);
expect(stack.getStackName()).andReturn("stackName");
expect(stack.getStackVersion()).andReturn("stackVersion");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1");
expect(component.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost);
}
}
);
expect(componentHost.convertToResponse()).andReturn(response);
expect(componentHost.getHostName()).andReturn("host1").anyTimes();
expect(maintHelper.getEffectiveState(componentHost,host)).andReturn(MaintenanceState.OFF);
replay(maintHelper,injector,clusters,cluster,host,response,stack,ambariMetaInfo,service,component,componentHost);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(1,setResponses.size());
assertTrue(setResponses.contains(response));
verify(injector,clusters,cluster,host,response,stack,ambariMetaInfo,service,component,componentHost);
}
InternalCallVerifier IdentityVerifier
/**
* Ensure that when the cluster security type updated from NONE to KERBEROS, KerberosHandler.toggleKerberos
* IS invoked
*/
@Test public void testUpdateClustersToggleKerberosEnable() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper);
expect(clusterRequest.getClusterId()).andReturn(1L).times(6);
expect(clusterRequest.getSecurityType()).andReturn(SecurityType.KERBEROS).anyTimes();
expect(clusters.getClusterById(1L)).andReturn(cluster).times(2);
expect(cluster.getClusterName()).andReturn("cluster").times(1);
expect(cluster.getSecurityType()).andReturn(SecurityType.NONE).anyTimes();
cluster.addSessionAttributes(anyObject(Map.class));
expectLastCall().once();
expect(kerberosHelper.shouldExecuteCustomOperations(SecurityType.KERBEROS,null)).andReturn(false).once();
expect(kerberosHelper.getManageIdentitiesDirective(null)).andReturn(null).once();
expect(kerberosHelper.toggleKerberos(anyObject(Cluster.class),anyObject(SecurityType.class),anyObject(RequestStageContainer.class),anyBoolean())).andReturn(null).once();
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
controller.updateClusters(setRequests,null);
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetClientHostForRunningAction_clientComponentThrowsException() throws Exception {
Injector injector=createNiceMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
StackId stackId=createNiceMock(StackId.class);
ServiceComponent component1=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
expect(service.getName()).andReturn("service");
expect(service.getServiceComponent("component")).andThrow(new ServiceComponentNotFoundException("cluster","service","component"));
expect(service.getDesiredStackVersion()).andReturn(stackId);
expect(stackId.getStackName()).andReturn("stack");
expect(stackId.getStackVersion()).andReturn("1.0");
Map componentsMap=new HashMap();
componentsMap.put("component1",component1);
componentsMap.put("component2",component2);
expect(service.getServiceComponents()).andReturn(componentsMap);
expect(component1.getServiceComponentHosts()).andReturn(Collections.EMPTY_MAP);
expect(component2.getServiceComponentHosts()).andReturn(Collections.singletonMap("anyHost",null));
ServiceInfo serviceInfo=createNiceMock(ServiceInfo.class);
ComponentInfo compInfo=createNiceMock(ComponentInfo.class);
expect(serviceInfo.getClientComponent()).andReturn(compInfo);
expect(compInfo.getName()).andReturn("component");
expect(ambariMetaInfo.getService("stack","1.0","service")).andReturn(serviceInfo);
replay(injector,cluster,service,component1,component2,serviceInfo,compInfo,ambariMetaInfo,stackId);
AmbariManagementControllerImpl controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
ServiceComponent resultComponent=controller.getClientComponentForRunningAction(cluster,service);
assertNotNull(resultComponent);
assertEquals(component2,resultComponent);
verify(injector,cluster,service,component1,component2,serviceInfo,compInfo,ambariMetaInfo,stackId);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostComponents___NullHostName_NullComponentName() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service1=createNiceMock(Service.class);
Service service2=createNiceMock(Service.class);
ServiceComponent component1=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
ServiceComponentHost componentHost2=createNiceMock(ServiceComponentHost.class);
ServiceComponentHost componentHost3=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response3=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,null,null,null);
Set setRequests=new HashSet();
setRequests.add(request1);
Map mapServices=new HashMap();
mapServices.put("foo",service1);
mapServices.put("bar",service2);
Map mapHostComponents=new HashMap();
mapHostComponents.put("foo",componentHost1);
mapHostComponents.put("bar",componentHost2);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",createNiceMock(Host.class));
}
}
).anyTimes();
expect(cluster.getServices()).andReturn(mapServices);
expect(service1.getServiceComponents()).andReturn(Collections.singletonMap("foo",component1));
expect(service2.getServiceComponents()).andReturn(Collections.singletonMap("bar",component2));
expect(component1.getName()).andReturn("component1").anyTimes();
expect(component2.getName()).andReturn("component2").anyTimes();
expect(component1.getServiceComponentHosts()).andReturn(mapHostComponents);
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost2.convertToResponse()).andReturn(response2);
expect(componentHost1.getHostName()).andReturn("host1");
expect(componentHost2.getHostName()).andReturn("host1");
expect(componentHost3.getHostName()).andReturn("host1");
expect(component2.getServiceComponentHosts()).andReturn(Collections.singletonMap("foobar",componentHost3));
expect(componentHost3.convertToResponse()).andReturn(response3);
replay(maintHelper,injector,clusters,cluster,response1,response2,response3,stack,ambariMetaInfo,service1,service2,component1,component2,componentHost1,componentHost2,componentHost3);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(3,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
assertTrue(setResponses.contains(response3));
verify(injector,clusters,cluster,response1,response2,response3,stack,ambariMetaInfo,service1,service2,component1,component2,componentHost1,componentHost2,componentHost3);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostComponents___OR_Predicate_ServiceNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
final Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
ServiceComponent component3=createNiceMock(ServiceComponent.class);
final ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
final ServiceComponentHost componentHost2=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
ServiceComponentHostRequest request2=new ServiceComponentHostRequest("cluster1",null,"component2","host1",null);
ServiceComponentHostRequest request3=new ServiceComponentHostRequest("cluster1",null,"component3","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster)).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stack).anyTimes();
expect(stack.getStackName()).andReturn("stackName").anyTimes();
expect(stack.getStackVersion()).andReturn("stackVersion").anyTimes();
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",host);
}
}
).anyTimes();
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1");
expect(component.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost1);
}
}
);
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost1.getHostName()).andReturn("host1");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component2")).andReturn("service2");
expect(cluster.getService("service2")).andThrow(new ServiceNotFoundException("cluster1","service2"));
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component3")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component3")).andReturn(component3);
expect(component3.getName()).andReturn("component3");
expect(component3.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost2);
}
}
);
expect(componentHost2.convertToResponse()).andReturn(response2);
expect(componentHost2.getHostName()).andReturn("host1");
replay(maintHelper,injector,clusters,cluster,host,stack,ambariMetaInfo,service,component,component2,component3,componentHost1,componentHost2,response1,response2);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,host,stack,ambariMetaInfo,service,component,component2,component3,componentHost1,componentHost2,response1,response2);
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
/**
* Ensure that when the cluster security type updated from KERBEROS to NONE, KerberosHandler.toggleKerberos
* IS invoked
*/
@Test public void testUpdateClustersToggleKerberos_Fail() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper);
expect(clusterRequest.getClusterId()).andReturn(1L).times(6);
expect(clusterRequest.getSecurityType()).andReturn(SecurityType.NONE).anyTimes();
expect(clusters.getClusterById(1L)).andReturn(cluster).times(2);
expect(cluster.getResourceId()).andReturn(1L).times(3);
expect(cluster.getClusterName()).andReturn("cluster").times(1);
expect(cluster.getSecurityType()).andReturn(SecurityType.KERBEROS).anyTimes();
expect(cluster.getCurrentClusterVersion()).andReturn(null).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(null).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(null).anyTimes();
cluster.setCurrentStackVersion(anyObject(StackId.class));
expectLastCall().once();
cluster.setClusterName(anyObject(String.class));
expectLastCall().once();
cluster.addSessionAttributes(anyObject(Map.class));
expectLastCall().once();
expect(kerberosHelper.shouldExecuteCustomOperations(SecurityType.NONE,null)).andReturn(false).once();
expect(kerberosHelper.getManageIdentitiesDirective(anyObject(Map.class))).andReturn(null).once();
expect(kerberosHelper.toggleKerberos(anyObject(Cluster.class),anyObject(SecurityType.class),anyObject(RequestStageContainer.class),anyBoolean())).andThrow(new IllegalArgumentException("bad args!")).once();
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
try {
controller.updateClusters(setRequests,null);
Assert.fail("IllegalArgumentException not thrown");
}
catch ( IllegalArgumentException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetClusters() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
ClusterRequest request1=new ClusterRequest(null,"cluster1","1",Collections.emptySet());
Cluster cluster=createNiceMock(Cluster.class);
ClusterResponse response=createNiceMock(ClusterResponse.class);
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(cluster.convertToResponse()).andReturn(response);
CredentialStoreService credentialStoreService=createNiceMock(CredentialStoreService.class);
expect(credentialStoreService.isInitialized(anyObject(CredentialStoreType.class))).andReturn(true).anyTimes();
replay(injector,clusters,cluster,response,credentialStoreService);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
Field f=controller.getClass().getDeclaredField("credentialStoreService");
f.setAccessible(true);
f.set(controller,credentialStoreService);
Set setResponses=controller.getClusters(setRequests);
assertEquals(1,setResponses.size());
assertTrue(setResponses.contains(response));
verify(injector,clusters,cluster,response,credentialStoreService);
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
@Test public void testGetHostComponents___OR_Predicate_ClusterNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
ServiceComponentHostRequest request2=new ServiceComponentHostRequest("cluster1",null,"component2","host2",null);
ServiceComponentHostRequest request3=new ServiceComponentHostRequest("cluster1",null,"component3","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andThrow(new ClusterNotFoundException("cluster1"));
replay(maintHelper,injector,clusters,stack,ambariMetaInfo);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
try {
controller.getHostComponents(setRequests);
fail("expected exception");
}
catch ( ParentObjectNotFoundException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(injector,clusters,stack,ambariMetaInfo);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetClientHostForRunningAction_noClientComponent() throws Exception {
Injector injector=createNiceMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
StackId stackId=createNiceMock(StackId.class);
ServiceComponent component1=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
expect(service.getName()).andReturn("service");
expect(service.getDesiredStackVersion()).andReturn(stackId);
expect(stackId.getStackName()).andReturn("stack");
expect(stackId.getStackVersion()).andReturn("1.0");
Map componentsMap=new HashMap();
componentsMap.put("component1",component1);
componentsMap.put("component2",component2);
expect(service.getServiceComponents()).andReturn(componentsMap);
expect(component1.getServiceComponentHosts()).andReturn(Collections.EMPTY_MAP);
expect(component2.getServiceComponentHosts()).andReturn(Collections.singletonMap("anyHost",null));
ServiceInfo serviceInfo=createNiceMock(ServiceInfo.class);
expect(serviceInfo.getClientComponent()).andReturn(null);
expect(ambariMetaInfo.getService("stack","1.0","service")).andReturn(serviceInfo);
replay(injector,cluster,service,component1,component2,serviceInfo,ambariMetaInfo,stackId);
AmbariManagementControllerImpl controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
ServiceComponent resultComponent=controller.getClientComponentForRunningAction(cluster,service);
assertNotNull(resultComponent);
assertEquals(component2,resultComponent);
verify(injector,cluster,service,component1,component2,serviceInfo,ambariMetaInfo,stackId);
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
/**
* Ensure that RollbackException is thrown outside the updateClusters method
* when a unique constraint violation occurs.
*/
@Test public void testUpdateClusters__RollbackException() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusterRequest.getClusterName()).andReturn("clusterNew").times(3);
expect(clusterRequest.getClusterId()).andReturn(1L).times(6);
expect(clusters.getClusterById(1L)).andReturn(cluster).times(2);
expect(cluster.getClusterName()).andReturn("clusterOld").times(1);
cluster.setClusterName("clusterNew");
expectLastCall().andThrow(new RollbackException());
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
try {
controller.updateClusters(setRequests,null);
fail("Expected RollbackException");
}
catch ( RollbackException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetClientHostForRunningAction_returnsHelathyHost() throws Exception {
Injector injector=createNiceMock(Injector.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
Map hostMap=createNiceMock(Map.class);
Set hostsSet=createNiceMock(Set.class);
expect(hostMap.isEmpty()).andReturn(false);
expect(hostMap.keySet()).andReturn(hostsSet);
expect(component.getServiceComponentHosts()).andReturn(hostMap).times(2);
replay(cluster,service,component,injector,actionManager,hostMap,hostsSet);
AmbariManagementControllerImpl controller=createMockBuilder(AmbariManagementControllerImpl.class).addMockedMethod("filterHostsForAction").addMockedMethod("getHealthyHost").withConstructor(actionManager,clusters,injector).createMock();
expect(controller.getHealthyHost(hostsSet)).andReturn("healthy_host");
controller.filterHostsForAction(hostsSet,service,cluster,Resource.Type.Cluster);
expectLastCall().once();
replay(controller);
String host=controller.getClientHostForRunningAction(cluster,service,component);
assertEquals("healthy_host",host);
verify(controller,cluster,service,component,injector,hostMap);
}
InternalCallVerifier IdentityVerifier
/**
* Ensure that when the cluster is updated KerberosHandler.toggleKerberos is not invoked unless
* the security type is altered
*/
@Test public void testUpdateClustersToggleKerberosNotInvoked() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper);
expect(clusterRequest.getClusterId()).andReturn(1L).times(6);
expect(clusters.getClusterById(1L)).andReturn(cluster).times(2);
expect(cluster.getClusterName()).andReturn("cluster").times(1);
cluster.addSessionAttributes(anyObject(Map.class));
expectLastCall().once();
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
controller.updateClusters(setRequests,null);
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
}
InternalCallVerifier IdentityVerifier
/**
* Ensure that when the cluster security type updated from KERBEROS to KERBEROS,
* KerberosHandler.toggleKerberos IS NOT invoked
*/
@Test public void testUpdateClustersToggleKerberosReenable() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper);
expect(clusterRequest.getClusterId()).andReturn(1L).times(6);
expect(clusterRequest.getSecurityType()).andReturn(SecurityType.KERBEROS).anyTimes();
expect(clusters.getClusterById(1L)).andReturn(cluster).times(2);
expect(cluster.getClusterName()).andReturn("cluster").times(1);
expect(cluster.getSecurityType()).andReturn(SecurityType.KERBEROS).anyTimes();
cluster.addSessionAttributes(anyObject(Map.class));
expectLastCall().once();
expect(kerberosHelper.shouldExecuteCustomOperations(SecurityType.KERBEROS,null)).andReturn(false).once();
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
controller.updateClusters(setRequests,null);
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager,kerberosHelper);
}
InternalCallVerifier EqualityVerifier
@Test public void testPopulateServicePackagesInfo() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
ServiceInfo serviceInfo=createNiceMock(ServiceInfo.class);
Map hostParams=new HashMap();
String osFamily="testOSFamily";
Map osSpecifics=new HashMap();
ServiceOsSpecific.Package package1=new ServiceOsSpecific.Package();
package1.setName("testrpm1");
ServiceOsSpecific.Package package2=new ServiceOsSpecific.Package();
package2.setName("testrpm2");
ServiceOsSpecific.Package package3=new ServiceOsSpecific.Package();
package3.setName("testrpm3");
List packageList1=new ArrayList();
packageList1.add(package1);
List packageList2=new ArrayList();
packageList2.add(package2);
packageList2.add(package3);
ServiceOsSpecific osSpecific1=new ServiceOsSpecific("testOSFamily");
osSpecific1.addPackages(packageList1);
ServiceOsSpecific osSpecific2=new ServiceOsSpecific("testOSFamily1,testOSFamily,testOSFamily2");
osSpecific2.addPackages(packageList2);
osSpecifics.put("testOSFamily",osSpecific1);
osSpecifics.put("testOSFamily1,testOSFamily,testOSFamily2",osSpecific2);
expect(serviceInfo.getOsSpecifics()).andReturn(osSpecifics);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
replay(maintHelper,injector,clusters,serviceInfo);
AmbariManagementControllerImplTest.NestedTestClass nestedTestClass=this.new NestedTestClass(null,clusters,injector);
ServiceOsSpecific serviceOsSpecific=nestedTestClass.populateServicePackagesInfo(serviceInfo,hostParams,osFamily);
assertEquals(serviceOsSpecific.getPackages().size(),3);
}
InternalCallVerifier BooleanVerifier IdentityVerifier HybridVerifier
@Test public void testGetHostComponents___ServiceComponentHostFilteredByState() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
final Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
final ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
request1.setState("INSTALLED");
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(maintHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster));
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",host);
}
}
).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stack);
expect(cluster.getClusterName()).andReturn("cl1");
expect(stack.getStackName()).andReturn("stackName");
expect(stack.getStackVersion()).andReturn("stackVersion");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1").anyTimes();
expect(component.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost1);
}
}
);
expect(componentHost1.getState()).andReturn(State.INSTALLED);
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost1.getHostName()).andReturn("host1");
replay(maintHelper,injector,clusters,cluster,host,stack,ambariMetaInfo,service,component,componentHost1,response1);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set responses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertTrue(responses.size() == 1);
verify(injector,clusters,cluster,host,stack,ambariMetaInfo,service,component,componentHost1,response1);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
/**
* Ensure that ClusterNotFoundException is handled where there are multiple requests as would be the
* case when an OR predicate is provided in the query.
*/
@Test public void testGetClusters___OR_Predicate_ClusterNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
Cluster cluster=createNiceMock(Cluster.class);
Cluster cluster2=createNiceMock(Cluster.class);
ClusterResponse response=createNiceMock(ClusterResponse.class);
ClusterResponse response2=createNiceMock(ClusterResponse.class);
ClusterRequest request1=new ClusterRequest(null,"cluster1","1",Collections.emptySet());
ClusterRequest request2=new ClusterRequest(null,"cluster2","1",Collections.emptySet());
ClusterRequest request3=new ClusterRequest(null,"cluster3","1",Collections.emptySet());
ClusterRequest request4=new ClusterRequest(null,"cluster4","1",Collections.emptySet());
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
setRequests.add(request4);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andThrow(new ClusterNotFoundException("cluster1"));
expect(clusters.getCluster("cluster2")).andReturn(cluster);
expect(clusters.getCluster("cluster3")).andReturn(cluster2);
expect(clusters.getCluster("cluster4")).andThrow(new ClusterNotFoundException("cluster4"));
expect(cluster.convertToResponse()).andReturn(response);
expect(cluster2.convertToResponse()).andReturn(response2);
CredentialStoreService credentialStoreService=createNiceMock(CredentialStoreService.class);
expect(credentialStoreService.isInitialized(anyObject(CredentialStoreType.class))).andReturn(true).anyTimes();
replay(injector,clusters,cluster,cluster2,response,response2,credentialStoreService);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
Field f=controller.getClass().getDeclaredField("credentialStoreService");
f.setAccessible(true);
f.set(controller,credentialStoreService);
Set setResponses=controller.getClusters(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,cluster2,response,response2,credentialStoreService);
}
InternalCallVerifier NullVerifier
@Test public void testGetClientHostForRunningAction_componentIsNull() throws Exception {
Injector injector=createNiceMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=null;
replay(cluster,service,injector);
AmbariManagementControllerImpl controller=new AmbariManagementControllerImpl(null,clusters,injector);
String host=controller.getClientHostForRunningAction(cluster,service,component);
assertNull(host);
verify(cluster,service,injector);
}
InternalCallVerifier NullVerifier
@Test public void testGetClientHostForRunningAction_componentMapIsEmpty() throws Exception {
Injector injector=createNiceMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
Map hostMap=new HashMap();
expect(component.getServiceComponentHosts()).andReturn(hostMap);
replay(cluster,service,component,injector);
AmbariManagementControllerImpl controller=new AmbariManagementControllerImpl(null,clusters,injector);
String host=controller.getClientHostForRunningAction(cluster,service,component);
verify(cluster,service,component,injector);
assertNull(host);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostComponents___OR_Predicate_ServiceComponentHostNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
final Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
ServiceComponent component3=createNiceMock(ServiceComponent.class);
final ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
final ServiceComponentHost componentHost2=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper stateHelper=createNiceMock(MaintenanceStateHelper.class);
expect(stateHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",host);
}
}
).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
ServiceComponentHostRequest request2=new ServiceComponentHostRequest("cluster1",null,"component2","host1",null);
ServiceComponentHostRequest request3=new ServiceComponentHostRequest("cluster1",null,"component3","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(stateHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster)).anyTimes();
expect(cluster.getService("service1")).andReturn(service).times(3);
expect(cluster.getDesiredStackVersion()).andReturn(stack).anyTimes();
expect(stack.getStackName()).andReturn("stackName").anyTimes();
expect(stack.getStackVersion()).andReturn("stackVersion").anyTimes();
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1");
expect(component.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost1);
}
}
);
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost1.getHostName()).andReturn("host1");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component2")).andReturn("service1");
expect(service.getServiceComponent("component2")).andReturn(component2);
expect(component2.getName()).andReturn("component2");
expect(component2.getServiceComponentHosts()).andReturn(null);
expect(componentHost2.getHostName()).andReturn("host1");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component3")).andReturn("service1");
expect(service.getServiceComponent("component3")).andReturn(component3);
expect(component3.getName()).andReturn("component3");
expect(component3.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost2);
}
}
);
expect(componentHost2.convertToResponse()).andReturn(response2);
replay(stateHelper,injector,clusters,cluster,host,stack,ambariMetaInfo,service,component,component2,component3,componentHost1,componentHost2,response1,response2);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,host,stack,ambariMetaInfo,service,component,component2,component3,componentHost1,componentHost2,response1,response2);
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
@Test public void testGetHostComponents___ServiceComponentHostNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster));
expect(cluster.getDesiredStackVersion()).andReturn(stack);
expect(stack.getStackName()).andReturn("stackName");
expect(stack.getStackVersion()).andReturn("stackVersion");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1").anyTimes();
expect(component.getServiceComponentHosts()).andReturn(null);
replay(maintHelper,injector,clusters,cluster,host,stack,ambariMetaInfo,service,component);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
try {
controller.getHostComponents(setRequests);
fail("expected ServiceComponentHostNotFoundException");
}
catch ( ServiceComponentHostNotFoundException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(injector,clusters,cluster,host,stack,ambariMetaInfo,service,component);
}
InternalCallVerifier IdentityVerifier IgnoredMethod HybridVerifier
/**
* Ensure that processing update request does not fail on configuration
* properties with no value specified (no value = null reference value)
* TODO disabled for now as tests nothing, check what exactly should be tested here
* updateCluster request was noop due to equality on cluster and request configs (both contained null)
* mocks are too limited to pass further these base checks
*/
@Test @Ignore public void testUpdateClustersWithNullConfigPropertyValues() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper);
expect(clusterRequest.getClusterName()).andReturn("clusterNew").anyTimes();
expect(clusterRequest.getClusterId()).andReturn(1L).anyTimes();
ConfigurationRequest configReq=new ConfigurationRequest();
final Map configReqProps=Maps.newHashMap();
configReqProps.put("p1",null);
configReq.setProperties(configReqProps);
expect(clusterRequest.getDesiredConfig()).andReturn(ImmutableList.of(configReq)).anyTimes();
expect(clusters.getClusterById(1L)).andReturn(cluster).anyTimes();
expect(cluster.getClusterName()).andReturn("clusterOld").anyTimes();
expect(cluster.getConfigPropertiesTypes(anyObject(String.class))).andReturn(Maps.>newHashMap()).anyTimes();
expect(cluster.getDesiredConfigByType(anyObject(String.class))).andReturn(new ConfigImpl("config-type"){
@Override public Map> getPropertiesAttributes(){
return Maps.newHashMap();
}
@Override public Map getProperties(){
return configReqProps;
}
}
).anyTimes();
cluster.addSessionAttributes(anyObject(Map.class));
expectLastCall().once();
cluster.setClusterName("clusterNew");
expectLastCall();
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
controller.updateClusters(setRequests,null);
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetClientHostForRunningAction_clientComponent() throws Exception {
Injector injector=createNiceMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
StackId stackId=createNiceMock(StackId.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
expect(service.getName()).andReturn("service");
expect(service.getServiceComponent("component")).andReturn(component);
expect(service.getDesiredStackVersion()).andReturn(stackId);
expect(stackId.getStackName()).andReturn("stack");
expect(stackId.getStackVersion()).andReturn("1.0");
ServiceInfo serviceInfo=createNiceMock(ServiceInfo.class);
ComponentInfo compInfo=createNiceMock(ComponentInfo.class);
expect(serviceInfo.getClientComponent()).andReturn(compInfo);
expect(compInfo.getName()).andReturn("component");
expect(component.getServiceComponentHosts()).andReturn(Collections.singletonMap("host",null));
expect(ambariMetaInfo.getService("stack","1.0","service")).andReturn(serviceInfo);
replay(injector,cluster,service,component,serviceInfo,compInfo,ambariMetaInfo,stackId);
AmbariManagementControllerImpl controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
ServiceComponent resultComponent=controller.getClientComponentForRunningAction(cluster,service);
assertNotNull(resultComponent);
assertEquals(component,resultComponent);
verify(injector,cluster,service,component,serviceInfo,compInfo,ambariMetaInfo,stackId);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostComponents___OR_Predicate_ServiceComponentNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
final Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
Service service2=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
ServiceComponent component3=createNiceMock(ServiceComponent.class);
final ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
final ServiceComponentHost componentHost2=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1","host1",null);
ServiceComponentHostRequest request2=new ServiceComponentHostRequest("cluster1",null,"component2","host1",null);
ServiceComponentHostRequest request3=new ServiceComponentHostRequest("cluster1",null,"component3","host1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(3);
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster)).anyTimes();
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",host);
}
}
).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stack).anyTimes();
expect(stack.getStackName()).andReturn("stackName").anyTimes();
expect(stack.getStackVersion()).andReturn("stackVersion").anyTimes();
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1");
expect(component.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost1);
}
}
);
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost1.getHostName()).andReturn("host1");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component2")).andReturn("service2");
expect(cluster.getService("service2")).andReturn(service2);
expect(service2.getServiceComponent("component2")).andThrow(new ServiceComponentNotFoundException("cluster1","service2","component2"));
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component3")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component3")).andReturn(component3);
expect(component3.getName()).andReturn("component3");
expect(component3.getServiceComponentHosts()).andReturn(new HashMap(){
{
put("host1",componentHost2);
}
}
);
expect(componentHost2.convertToResponse()).andReturn(response2);
expect(componentHost2.getHostName()).andReturn("host1");
replay(maintHelper,injector,clusters,cluster,host,stack,ambariMetaInfo,service,service2,component,component2,component3,componentHost1,componentHost2,response1,response2);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,host,stack,ambariMetaInfo,service,service2,component,component2,component3,componentHost1,componentHost2,response1,response2);
}
InternalCallVerifier IdentityVerifier
/**
* Ensure that when the cluster id is provided and the given cluster name is different from the cluster's name
* then the cluster rename logic is executed.
*/
@Test public void testUpdateClusters() throws Exception {
Capture controllerCapture=new Capture();
Injector injector=createStrictMock(Injector.class);
Cluster cluster=createNiceMock(Cluster.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
ClusterRequest clusterRequest=createNiceMock(ClusterRequest.class);
Set setRequests=Collections.singleton(clusterRequest);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null);
expect(injector.getInstance(KerberosHelper.class)).andReturn(kerberosHelper);
expect(clusterRequest.getClusterName()).andReturn("clusterNew").times(3);
expect(clusterRequest.getClusterId()).andReturn(1L).times(6);
expect(clusters.getClusterById(1L)).andReturn(cluster).times(2);
expect(cluster.getClusterName()).andReturn("clusterOld").times(1);
cluster.addSessionAttributes(anyObject(Map.class));
expectLastCall().once();
cluster.setClusterName("clusterNew");
expectLastCall();
replay(actionManager,cluster,clusters,injector,clusterRequest,sessionManager);
AmbariManagementController controller=new AmbariManagementControllerImpl(actionManager,clusters,injector);
controller.updateClusters(setRequests,null);
assertSame(controller,controllerCapture.getValue());
verify(actionManager,cluster,clusters,injector,clusterRequest,sessionManager);
}
InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostComponents___NullHostName() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
StackId stack=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
ServiceComponentHost componentHost1=createNiceMock(ServiceComponentHost.class);
ServiceComponentHost componentHost2=createNiceMock(ServiceComponentHost.class);
ServiceComponentHostResponse response1=createNiceMock(ServiceComponentHostResponse.class);
ServiceComponentHostResponse response2=createNiceMock(ServiceComponentHostResponse.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
expect(maintHelper.getEffectiveState(anyObject(ServiceComponentHost.class),anyObject(Host.class))).andReturn(MaintenanceState.OFF).anyTimes();
ServiceComponentHostRequest request1=new ServiceComponentHostRequest("cluster1",null,"component1",null,null);
Set setRequests=new HashSet();
setRequests.add(request1);
Map mapHostComponents=new HashMap();
mapHostComponents.put("foo",componentHost1);
mapHostComponents.put("bar",componentHost2);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(clusters.getHostsForCluster((String)anyObject())).andReturn(new HashMap(){
{
put("host1",createNiceMock(Host.class));
}
}
).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stack);
expect(stack.getStackName()).andReturn("stackName");
expect(stack.getStackVersion()).andReturn("stackVersion");
expect(ambariMetaInfo.getComponentToService("stackName","stackVersion","component1")).andReturn("service1");
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andReturn(component);
expect(component.getName()).andReturn("component1").anyTimes();
expect(component.getServiceComponentHosts()).andReturn(mapHostComponents);
expect(componentHost1.convertToResponse()).andReturn(response1);
expect(componentHost2.convertToResponse()).andReturn(response2);
expect(componentHost1.getHostName()).andReturn("host1");
expect(componentHost2.getHostName()).andReturn("host1");
replay(maintHelper,injector,clusters,cluster,response1,response2,stack,ambariMetaInfo,service,component,componentHost1,componentHost2);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
setAmbariMetaInfo(ambariMetaInfo,controller);
Set setResponses=controller.getHostComponents(setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,response1,response2,stack,ambariMetaInfo,service,component,componentHost1,componentHost2);
}
Class: org.apache.ambari.server.controller.AmbariManagementControllerTest APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testGetHosts() throws AmbariException, AuthorizationException {
setupClusterWithHosts("c1","HDP-0.2",new ArrayList(){
{
add("h1");
add("h2");
}
}
,"centos5");
setupClusterWithHosts("c2","HDP-0.2",new ArrayList(){
{
add("h3");
}
}
,"centos5");
clusters.addHost("h4");
setOsFamily(clusters.getHost("h4"),"redhat","5.9");
clusters.getHost("h4").persist();
Map attrs=new HashMap();
attrs.put("a1","b1");
clusters.getHost("h3").setHostAttributes(attrs);
attrs.put("a2","b2");
clusters.getHost("h4").setHostAttributes(attrs);
HostRequest r=new HostRequest(null,null,null);
Set resps=HostResourceProviderTest.getHosts(controller,Collections.singleton(r));
Assert.assertEquals(4,resps.size());
Set foundHosts=new HashSet();
for ( HostResponse resp : resps) {
foundHosts.add(resp.getHostname());
if (resp.getHostname().equals("h1")) {
Assert.assertEquals("c1",resp.getClusterName());
Assert.assertEquals(2,resp.getHostAttributes().size());
}
else if (resp.getHostname().equals("h2")) {
Assert.assertEquals("c1",resp.getClusterName());
Assert.assertEquals(2,resp.getHostAttributes().size());
}
else if (resp.getHostname().equals("h3")) {
Assert.assertEquals("c2",resp.getClusterName());
Assert.assertEquals(3,resp.getHostAttributes().size());
}
else if (resp.getHostname().equals("h4")) {
Assert.assertEquals("",resp.getClusterName());
Assert.assertEquals(4,resp.getHostAttributes().size());
}
else {
fail("Found invalid host");
}
}
Assert.assertEquals(4,foundHosts.size());
r=new HostRequest("h1",null,null);
resps=HostResourceProviderTest.getHosts(controller,Collections.singleton(r));
Assert.assertEquals(1,resps.size());
HostResponse resp=resps.iterator().next();
Assert.assertEquals("h1",resp.getHostname());
Assert.assertEquals("c1",resp.getClusterName());
Assert.assertEquals(2,resp.getHostAttributes().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServicesSimple() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
String serviceName="HDFS";
clusters.getCluster("foo1").setDesiredStackVersion(new StackId("HDP-0.1"));
createService(clusterName,serviceName,State.INIT);
Service s=clusters.getCluster(clusterName).getService(serviceName);
Assert.assertNotNull(s);
Assert.assertEquals(serviceName,s.getName());
Assert.assertEquals(clusterName,s.getCluster().getClusterName());
ServiceRequest req=new ServiceRequest(clusterName,serviceName,null);
Set r=ServiceResourceProviderTest.getServices(controller,Collections.singleton(req));
Assert.assertEquals(1,r.size());
ServiceResponse resp=r.iterator().next();
Assert.assertEquals(serviceName,resp.getServiceName());
Assert.assertEquals(clusterName,resp.getClusterName());
Assert.assertEquals(State.INIT.toString(),resp.getDesiredState());
Assert.assertEquals("HDP-0.1",resp.getDesiredStackVersion());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetExecutionCommand() throws Exception {
testCreateServiceComponentHostSimple();
String clusterName="foo1";
String serviceName="HDFS";
Cluster cluster=clusters.getCluster(clusterName);
Service s1=cluster.getService(serviceName);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
installService(clusterName,serviceName,false,false);
ExecutionCommand ec=controller.getExecutionCommand(cluster,s1.getServiceComponent("NAMENODE").getServiceComponentHost("h1"),RoleCommand.START);
assertEquals("1-0",ec.getCommandId());
assertEquals("foo1",ec.getClusterName());
Map> configurations=ec.getConfigurations();
assertNotNull(configurations);
assertEquals(2,configurations.size());
assertTrue(configurations.containsKey("hdfs-site"));
assertTrue(configurations.containsKey("core-site"));
assertTrue(ec.getConfigurationAttributes().containsKey("hdfs-site"));
assertTrue(ec.getConfigurationAttributes().containsKey("core-site"));
assertTrue(ec.getCommandParams().containsKey("max_duration_for_retries"));
assertEquals("0",ec.getCommandParams().get("max_duration_for_retries"));
assertTrue(ec.getCommandParams().containsKey("command_retry_enabled"));
assertEquals("false",ec.getCommandParams().get("command_retry_enabled"));
Map> chInfo=ec.getClusterHostInfo();
assertTrue(chInfo.containsKey("namenode_host"));
}
BranchVerifier InternalCallVerifier EqualityVerifier IgnoredMethod HybridVerifier
@Test @Ignore("Unsuported feature !") public void testConfigsAttachedToServiceNotCluster() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
controller.createConfiguration(cr1);
controller.createConfiguration(cr2);
Map configVersions=new HashMap(){
{
put("core-site","version1");
put("hdfs-site","version1");
}
}
;
ServiceRequest sr=new ServiceRequest(clusterName,serviceName,null);
ServiceResourceProviderTest.updateServices(controller,Collections.singleton(sr),new HashMap(),false,false);
installService(clusterName,serviceName,false,false);
long requestId=startService(clusterName,serviceName,true,false);
Assert.assertEquals(0,clusters.getCluster(clusterName).getDesiredConfigs().size());
List stages=actionDB.getAllStages(requestId);
boolean serviceCheckFound=false;
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.HDFS_SERVICE_CHECK)) {
serviceCheckFound=true;
Assert.assertEquals(2,hrc.getExecutionCommandWrapper().getExecutionCommand().getConfigurationTags().size());
}
}
}
Assert.assertEquals(true,serviceCheckFound);
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testUpdateClusterVersionBasic() throws AmbariException, AuthorizationException {
String clusterName="foo1";
String serviceName="MAPREDUCE";
String host1="h1";
String host2="h2";
String componentName="JOBTRACKER";
StackId currentStackId=new StackId("HDP-0.1");
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createCluster(clusterName);
Cluster c=clusters.getCluster(clusterName);
c.setDesiredStackVersion(currentStackId);
createService(clusterName,serviceName,State.INIT);
createServiceComponent(clusterName,serviceName,componentName,null);
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName,host1,null);
createServiceComponentHost(clusterName,null,componentName,host2,null);
c.getService(serviceName).setDesiredState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).setDesiredState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).setDesiredState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setDesiredState(State.STARTED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).setState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setState(State.STARTED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).setStackVersion(currentStackId);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setStackVersion(currentStackId);
ClusterRequest r=new ClusterRequest(c.getClusterId(),clusterName,"HDP-0.0.1",null);
try {
controller.updateClusters(Collections.singleton(r),mapRequestProps);
fail("Update cluster should fail");
}
catch ( AmbariException e) {
Assert.assertTrue(e.getMessage().contains("must be greater than current version"));
}
r=new ClusterRequest(c.getClusterId(),clusterName,"HDPLocal-1.2.2",null);
try {
controller.updateClusters(Collections.singleton(r),mapRequestProps);
fail("Update cluster should fail");
}
catch ( AmbariException e) {
Assert.assertTrue(e.getMessage().contains("Upgrade not possible between different stacks"));
}
r=new ClusterRequest(c.getClusterId(),clusterName,"HDP-0.2",null);
try {
controller.updateClusters(Collections.singleton(r),mapRequestProps);
fail("Update cluster should fail");
}
catch ( AmbariException e) {
Assert.assertTrue(e.getMessage().contains("Upgrade needs all services to be stopped"));
Assert.assertTrue(e.getMessage().contains(serviceName));
}
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setDesiredState(State.INSTALLED);
r=new ClusterRequest(c.getClusterId(),clusterName,"HDP-0.2",null);
try {
controller.updateClusters(Collections.singleton(r),mapRequestProps);
fail("Update cluster should fail");
}
catch ( AmbariException e) {
Assert.assertTrue(e.getMessage().contains("Upgrade needs all services to be stopped"));
Assert.assertTrue(e.getMessage().contains(componentName));
}
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setState(State.INSTALLED);
controller.updateClusters(Collections.singleton(r),mapRequestProps);
StackId expectedStackId=new StackId("HDP-0.2");
Assert.assertTrue(expectedStackId.equals(c.getDesiredStackVersion()));
Assert.assertTrue(expectedStackId.equals(c.getService(serviceName).getDesiredStackVersion()));
Assert.assertTrue(expectedStackId.equals(c.getService(serviceName).getServiceComponent(componentName).getDesiredStackVersion()));
Assert.assertTrue(expectedStackId.equals(c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).getDesiredStackVersion()));
Assert.assertTrue(expectedStackId.equals(c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).getDesiredStackVersion()));
Assert.assertTrue(currentStackId.equals(c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).getStackVersion()));
Assert.assertTrue(currentStackId.equals(c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).getStackVersion()));
ServiceComponent sc=c.getService(serviceName).getServiceComponent(componentName);
Assert.assertEquals(State.UPGRADING,sc.getServiceComponentHost(host1).getState());
Assert.assertEquals(State.UPGRADING,sc.getServiceComponentHost(host2).getState());
try {
controller.updateClusters(Collections.singleton(r),mapRequestProps);
fail("Update cluster should fail");
}
catch ( AmbariException e) {
Assert.assertTrue(e.getMessage().contains("A prior upgrade request with id"));
}
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).setDesiredState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setDesiredState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host1).setState(State.INSTALLED);
c.getService(serviceName).getServiceComponent(componentName).getServiceComponentHost(host2).setState(State.INSTALLED);
c.setCurrentStackVersion(expectedStackId);
r=new ClusterRequest(c.getClusterId(),clusterName,"",null);
controller.updateClusters(Collections.singleton(r),mapRequestProps);
Assert.assertEquals(State.INSTALLED,sc.getServiceComponentHost(host1).getState());
Assert.assertEquals(State.INSTALLED,sc.getServiceComponentHost(host2).getState());
r=new ClusterRequest(c.getClusterId(),clusterName,null,null);
controller.updateClusters(Collections.singleton(r),mapRequestProps);
Assert.assertEquals(State.INSTALLED,sc.getServiceComponentHost(host1).getState());
Assert.assertEquals(State.INSTALLED,sc.getServiceComponentHost(host2).getState());
r=new ClusterRequest(c.getClusterId(),clusterName,"HDP-0.2",null);
controller.updateClusters(Collections.singleton(r),mapRequestProps);
Assert.assertEquals(State.INSTALLED,sc.getServiceComponentHost(host1).getState());
Assert.assertEquals(State.INSTALLED,sc.getServiceComponentHost(host2).getState());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceComponentMultiple() throws AmbariException, AuthorizationException {
clusters.addCluster("c1",new StackId("HDP-0.2"));
clusters.addCluster("c2",new StackId("HDP-0.2"));
Cluster c1=clusters.getCluster("c1");
StackId stackId=new StackId("HDP-0.2");
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Service s1=serviceFactory.createNew(c1,"HDFS");
Service s2=serviceFactory.createNew(c1,"MAPREDUCE");
c1.addService(s1);
c1.addService(s2);
s1.persist();
s2.persist();
Set set1=new HashSet();
ServiceComponentRequest valid1=new ServiceComponentRequest("c1","HDFS","NAMENODE",null);
ServiceComponentRequest valid2=new ServiceComponentRequest("c1","MAPREDUCE","JOBTRACKER",null);
ServiceComponentRequest valid3=new ServiceComponentRequest("c1","MAPREDUCE","TASKTRACKER",null);
set1.add(valid1);
set1.add(valid2);
set1.add(valid3);
ComponentResourceProviderTest.createComponents(controller,set1);
Assert.assertEquals(1,c1.getService("HDFS").getServiceComponents().size());
Assert.assertEquals(2,c1.getService("MAPREDUCE").getServiceComponents().size());
Assert.assertNotNull(c1.getService("HDFS").getServiceComponent("NAMENODE"));
Assert.assertNotNull(c1.getService("MAPREDUCE").getServiceComponent("JOBTRACKER"));
Assert.assertNotNull(c1.getService("MAPREDUCE").getServiceComponent("TASKTRACKER"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testStackServiceComponentCustomCommands() throws Exception {
StackServiceComponentRequest namenodeRequest=new StackServiceComponentRequest(STACK_NAME,NEW_STACK_VERSION,SERVICE_NAME,COMPONENT_NAME);
Set responses=controller.getStackComponents(Collections.singleton(namenodeRequest));
Assert.assertEquals(1,responses.size());
StackServiceComponentResponse response=responses.iterator().next();
assertNotNull(response.getCustomCommands());
assertEquals(2,response.getCustomCommands().size());
assertEquals("DECOMMISSION",response.getCustomCommands().get(0));
assertEquals("REBALANCEHDFS",response.getCustomCommands().get(1));
StackServiceComponentRequest journalNodeRequest=new StackServiceComponentRequest(STACK_NAME,NEW_STACK_VERSION,SERVICE_NAME,"JOURNALNODE");
responses=controller.getStackComponents(Collections.singleton(journalNodeRequest));
Assert.assertEquals(1,responses.size());
response=responses.iterator().next();
assertNotNull(response.getCustomCommands());
assertEquals(0,response.getCustomCommands().size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetStackVersions() throws Exception {
StackVersionRequest request=new StackVersionRequest(STACK_NAME,null);
Set responses=controller.getStackVersions(Collections.singleton(request));
Assert.assertEquals(STACK_VERSIONS_CNT,responses.size());
StackVersionRequest requestWithParams=new StackVersionRequest(STACK_NAME,STACK_VERSION);
Set responsesWithParams=controller.getStackVersions(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackVersionResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getStackVersion(),STACK_VERSION);
}
StackVersionRequest invalidRequest=new StackVersionRequest(STACK_NAME,NON_EXT_VALUE);
try {
controller.getStackVersions(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
requestWithParams=new StackVersionRequest(STACK_NAME,"2.1.1");
responsesWithParams=controller.getStackVersions(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
StackVersionResponse resp=responsesWithParams.iterator().next();
assertNotNull(resp.getUpgradePacks());
assertEquals(8,resp.getUpgradePacks().size());
assertTrue(resp.getUpgradePacks().contains("upgrade_test"));
}
InternalCallVerifier EqualityVerifier IgnoredMethod HybridVerifier
@SuppressWarnings("serial") @Ignore @Test public void testDeleteUsers() throws Exception {
createUser("user1");
UserRequest request=new UserRequest("user1");
controller.updateUsers(Collections.singleton(request));
request=new UserRequest("user1");
controller.deleteUsers(Collections.singleton(request));
Set responses=controller.getUsers(Collections.singleton(new UserRequest(null)));
Assert.assertEquals(0,responses.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetStacks() throws Exception {
StackRequest request=new StackRequest(null);
Set responses=controller.getStacks(Collections.singleton(request));
Assert.assertEquals(STACKS_CNT,responses.size());
StackRequest requestWithParams=new StackRequest(STACK_NAME);
Set responsesWithParams=controller.getStacks(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getStackName(),STACK_NAME);
}
StackRequest invalidRequest=new StackRequest(NON_EXT_VALUE);
try {
controller.getStacks(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testConfigAttributesStaleConfigFilter() throws AmbariException, AuthorizationException {
final String host1="h1";
final String host2="h2";
Long clusterId=1L;
String clusterName="foo1";
setupClusterWithHosts(clusterName,"HDP-2.0.5",new ArrayList(){
{
add(host1);
add(host2);
}
}
,"centos5");
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
installService(clusterName,serviceName,false,false);
Map hdfsConfigs=new HashMap();
hdfsConfigs.put("a","b");
Map> hdfsConfigAttributes=new HashMap>(){
{
put("final",new HashMap(){
{
put("a","true");
}
}
);
}
}
;
ConfigurationRequest cr1=new ConfigurationRequest(clusterName,"hdfs-site","version1",hdfsConfigs,hdfsConfigAttributes);
ClusterRequest crReq1=new ClusterRequest(clusterId,clusterName,null,null);
crReq1.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq1),null);
startService(clusterName,serviceName,false,false);
HashMap> actualConfig=new HashMap>(){
{
put("hdfs-site",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
;
HashMap> actualConfigOld=new HashMap>(){
{
put("hdfs-site",new HashMap(){
{
put("tag","version0");
}
}
);
}
}
;
Service s1=clusters.getCluster(clusterName).getService(serviceName);
s1.getServiceComponent(componentName1).getServiceComponentHost(host1).updateActualConfigs(actualConfig);
s1.getServiceComponent(componentName2).getServiceComponentHost(host1).updateActualConfigs(actualConfig);
s1.getServiceComponent(componentName3).getServiceComponentHost(host1).updateActualConfigs(actualConfigOld);
s1.getServiceComponent(componentName2).getServiceComponentHost(host2).updateActualConfigs(actualConfigOld);
s1.getServiceComponent(componentName3).getServiceComponentHost(host2).updateActualConfigs(actualConfig);
ServiceComponentHostRequest r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(5,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setStaleConfig("true");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setStaleConfig("false");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(3,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,host1,null);
r.setStaleConfig("false");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,host2,null);
r.setStaleConfig("true");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
}
InternalCallVerifier BooleanVerifier
@Test public void setMonitoringServicesRestartRequired() throws Exception {
String clusterName="c1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
StackId stackId=new StackId("HDP-2.0.8");
cluster.setDesiredStackVersion(stackId);
cluster.setCurrentStackVersion(stackId);
String hdfsService="HDFS";
String fakeMonitoringService="FAKENAGIOS";
createService(clusterName,hdfsService,null);
createService(clusterName,fakeMonitoringService,null);
String namenode="NAMENODE";
String datanode="DATANODE";
String hdfsClient="HDFS_CLIENT";
String fakeServer="FAKE_MONITORING_SERVER";
createServiceComponent(clusterName,hdfsService,namenode,State.INIT);
createServiceComponent(clusterName,hdfsService,datanode,State.INIT);
createServiceComponent(clusterName,fakeMonitoringService,fakeServer,State.INIT);
String host1="h1";
addHostToCluster(host1,clusterName);
createServiceComponentHost(clusterName,hdfsService,namenode,host1,null);
createServiceComponentHost(clusterName,hdfsService,datanode,host1,null);
createServiceComponentHost(clusterName,fakeMonitoringService,fakeServer,host1,null);
ServiceComponentHost monitoringServiceComponentHost=null;
for ( ServiceComponentHost sch : cluster.getServiceComponentHosts(host1)) {
if (sch.getServiceComponentName().equals(fakeServer)) {
monitoringServiceComponentHost=sch;
}
}
assertFalse(monitoringServiceComponentHost.isRestartRequired());
createServiceComponent(clusterName,hdfsService,hdfsClient,State.INIT);
createServiceComponentHost(clusterName,hdfsService,hdfsClient,host1,null);
assertTrue(monitoringServiceComponentHost.isRestartRequired());
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
/**
* Ensure that ServiceNotFoundException is propagated in case where there is a single request.
*/
@Test public void testGetServices___ServiceNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
Clusters clusters=createNiceMock(Clusters.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
Cluster cluster=createNiceMock(Cluster.class);
ServiceRequest request1=new ServiceRequest("cluster1","service1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createStrictMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(cluster.getService("service1")).andThrow(new ServiceNotFoundException("custer1","service1"));
replay(maintHelper,injector,clusters,cluster);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
try {
ServiceResourceProviderTest.getServices(controller,setRequests);
fail("expected ServiceNotFoundException");
}
catch ( ServiceNotFoundException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(injector,clusters,cluster);
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDeleteClusterCreateHost() throws Exception {
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY,"in-memory");
properties.setProperty(Configuration.METADATA_DIR_PATH,"src/test/resources/stacks");
properties.setProperty(Configuration.SERVER_VERSION_FILE,"../version");
properties.setProperty(Configuration.OS_VERSION_KEY,"centos6");
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,"src/test/resources/");
try {
install(new ControllerModule(properties));
}
catch ( Exception e) {
throw new RuntimeException(e);
}
}
}
);
injector.getInstance(GuiceJpaInitializer.class);
String STACK_ID="HDP-2.0.1";
Long CLUSTER_ID=1L;
String CLUSTER_NAME="c1";
String HOST1="h1";
String HOST2="h2";
try {
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(HOST1);
Host host=clusters.getHost(HOST1);
setOsFamily(host,"redhat","6.3");
host.persist();
clusters.addHost(HOST2);
host=clusters.getHost(HOST2);
setOsFamily(host,"redhat","6.3");
host.persist();
AmbariManagementController amc=injector.getInstance(AmbariManagementController.class);
ClusterRequest cr=new ClusterRequest(null,CLUSTER_NAME,STACK_ID,null);
amc.createCluster(cr);
ConfigurationRequest configRequest=new ConfigurationRequest(CLUSTER_NAME,"global","version1",new HashMap(){
{
put("a","b");
}
}
,null);
cr.setDesiredConfig(Collections.singletonList(configRequest));
cr.setClusterId(CLUSTER_ID);
amc.updateClusters(Collections.singleton(cr),new HashMap());
Set hrs=new HashSet();
hrs.add(new HostRequest(HOST1,CLUSTER_NAME,null));
HostResourceProviderTest.createHosts(amc,hrs);
Set serviceRequests=new HashSet();
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"HDFS",null));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"MAPREDUCE2",null));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"YARN",null));
ServiceResourceProviderTest.createServices(amc,serviceRequests);
Set serviceComponentRequests=new HashSet();
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","SECONDARY_NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","DATANODE",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"MAPREDUCE2","HISTORYSERVER",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"YARN","RESOURCEMANAGER",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"YARN","NODEMANAGER",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","HDFS_CLIENT",null));
ComponentResourceProviderTest.createComponents(amc,serviceComponentRequests);
Set componentHostRequests=new HashSet();
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"DATANODE",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"NAMENODE",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"SECONDARY_NAMENODE",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"HISTORYSERVER",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"RESOURCEMANAGER",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"NODEMANAGER",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"HDFS_CLIENT",HOST1,null));
amc.createHostComponents(componentHostRequests);
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS",null,null);
ExecuteActionRequest ar=new ExecuteActionRequest(CLUSTER_NAME,Role.HDFS_SERVICE_CHECK.name(),null,false);
ar.getResourceFilters().add(resourceFilter);
amc.createAction(ar,null);
amc.deleteCluster(cr);
assertNotNull(clusters.getHost(HOST1));
assertNotNull(clusters.getHost(HOST2));
HostDAO dao=injector.getInstance(HostDAO.class);
assertNotNull(dao.findByName(HOST1));
assertNotNull(dao.findByName(HOST2));
}
finally {
injector.getInstance(PersistService.class).stop();
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetTasksByRequestId() throws AmbariException {
final long requestId1=1;
final long requestId2=2;
final long requestId3=3;
final String clusterName="c1";
final String hostName1="h1";
final String context="Test invocation";
StackId stackID=new StackId("HDP-0.1");
clusters.addCluster(clusterName,stackID);
Cluster c=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackID,stackID.getStackVersion());
c.createClusterVersion(stackID,stackID.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
clusters.addHost(hostName1);
setOsFamily(clusters.getHost("h1"),"redhat","5.9");
clusters.getHost(hostName1).persist();
clusters.mapHostsToCluster(new HashSet(){
{
add(hostName1);
}
}
,clusterName);
List stages=new ArrayList();
stages.add(stageFactory.createNew(requestId1,"/a1",clusterName,1L,context,CLUSTER_HOST_INFO,"",""));
stages.get(0).setStageId(1);
stages.get(0).addHostRoleExecutionCommand(hostName1,Role.HBASE_MASTER,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_MASTER.toString(),hostName1,System.currentTimeMillis()),clusterName,"HBASE",false,false);
stages.add(stageFactory.createNew(requestId1,"/a2",clusterName,1L,context,CLUSTER_HOST_INFO,"",""));
stages.get(1).setStageId(2);
stages.get(1).addHostRoleExecutionCommand(hostName1,Role.HBASE_CLIENT,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_CLIENT.toString(),hostName1,System.currentTimeMillis()),clusterName,"HBASE",false,false);
stages.add(stageFactory.createNew(requestId1,"/a3",clusterName,1L,context,CLUSTER_HOST_INFO,"",""));
stages.get(2).setStageId(3);
stages.get(2).addHostRoleExecutionCommand(hostName1,Role.HBASE_CLIENT,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_CLIENT.toString(),hostName1,System.currentTimeMillis()),clusterName,"HBASE",false,false);
Request request=new Request(stages,clusters);
actionDB.persistActions(request);
stages.clear();
stages.add(stageFactory.createNew(requestId2,"/a4",clusterName,1L,context,CLUSTER_HOST_INFO,"",""));
stages.get(0).setStageId(4);
stages.get(0).addHostRoleExecutionCommand(hostName1,Role.HBASE_CLIENT,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_CLIENT.toString(),hostName1,System.currentTimeMillis()),clusterName,"HBASE",false,false);
stages.add(stageFactory.createNew(requestId2,"/a5",clusterName,1L,context,CLUSTER_HOST_INFO,"",""));
stages.get(1).setStageId(5);
stages.get(1).addHostRoleExecutionCommand(hostName1,Role.HBASE_CLIENT,RoleCommand.START,new ServiceComponentHostStartEvent(Role.HBASE_CLIENT.toString(),hostName1,System.currentTimeMillis()),clusterName,"HBASE",false,false);
request=new Request(stages,clusters);
actionDB.persistActions(request);
ServiceComponentHostServerActionEvent serviceComponentHostServerActionEvent=new ServiceComponentHostServerActionEvent(Role.AMBARI_SERVER_ACTION.toString(),null,System.currentTimeMillis());
stages.clear();
stages.add(stageFactory.createNew(requestId3,"/a6",clusterName,1L,context,CLUSTER_HOST_INFO,"",""));
stages.get(0).setStageId(6);
stages.get(0).addServerActionCommand("some.action.class.name",null,Role.AMBARI_SERVER_ACTION,RoleCommand.EXECUTE,clusterName,serviceComponentHostServerActionEvent,null,null,null,null,false,false);
assertEquals("_internal_ambari",stages.get(0).getOrderedHostRoleCommands().get(0).getHostName());
request=new Request(stages,clusters);
actionDB.persistActions(request);
org.apache.ambari.server.controller.spi.Request spiRequest=PropertyHelper.getReadRequest(TaskResourceProvider.TASK_CLUSTER_NAME_PROPERTY_ID,TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID,TaskResourceProvider.TASK_STAGE_ID_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(requestId1).toPredicate();
List entities=hostRoleCommandDAO.findAll(spiRequest,predicate);
Assert.assertEquals(3,entities.size());
predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(requestId1).and().property(TaskResourceProvider.TASK_ID_PROPERTY_ID).equals(2L).toPredicate();
entities=hostRoleCommandDAO.findAll(spiRequest,predicate);
Assert.assertEquals(1,entities.size());
predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(requestId2).toPredicate();
entities=hostRoleCommandDAO.findAll(spiRequest,predicate);
Assert.assertEquals(2,entities.size());
predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(requestId1).and().property(TaskResourceProvider.TASK_ID_PROPERTY_ID).equals(2L).or().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(requestId2).toPredicate();
entities=hostRoleCommandDAO.findAll(spiRequest,predicate);
Assert.assertEquals(3,entities.size());
}
APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSecretReferences() throws AmbariException, AuthorizationException {
final String host1="h1";
final String host2="h2";
Long clusterId=1L;
String clusterName="foo1";
Cluster cl=setupClusterWithHosts(clusterName,"HDP-2.0.5",new ArrayList(){
{
add(host1);
add(host2);
}
}
,"centos5");
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
installService(clusterName,serviceName,false,false);
ClusterRequest crReq;
ConfigurationRequest cr;
cr=new ConfigurationRequest(clusterName,"hdfs-site","version1",new HashMap(){
{
put("test.password","first");
put("test.password.empty","");
}
}
,new HashMap>());
crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr));
controller.updateClusters(Collections.singleton(crReq),null);
cr=new ConfigurationRequest(clusterName,"hdfs-site","version2",new HashMap(){
{
put("test.password","SECRET:hdfs-site:1:test.password");
put("new","new");
}
}
,new HashMap>());
crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr));
controller.updateClusters(Collections.singleton(crReq),null);
cr=new ConfigurationRequest(clusterName,"hdfs-site","version3",new HashMap(){
{
put("test.password","brandNewPassword");
}
}
,new HashMap>());
crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr));
controller.updateClusters(Collections.singleton(crReq),null);
cr=new ConfigurationRequest(clusterName,"hdfs-site","version3",new HashMap(){
{
put("test.password","SECRET:hdfs-site:666:test.password");
}
}
,new HashMap>());
crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr));
try {
controller.updateClusters(Collections.singleton(crReq),null);
fail("Request need to be failed with wrong secret reference");
}
catch ( AmbariException e) {
}
cr=new ConfigurationRequest(clusterName,"hdfs-site","version4",new HashMap(){
{
put("foo","bar");
}
}
,new HashMap>());
crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr));
controller.updateClusters(Collections.singleton(crReq),null);
cr=new ConfigurationRequest(clusterName,"hdfs-site","version5",new HashMap(){
{
put("test.password","SECRET:hdfs-site:4:test.password");
put("new","new");
}
}
,new HashMap>());
crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr));
try {
controller.updateClusters(Collections.singleton(crReq),null);
fail("Request need to be failed with wrong secret reference");
}
catch ( AmbariException e) {
assertEquals("Error when parsing secret reference. Cluster: foo1 ConfigType: hdfs-site ConfigVersion: 4 does not contain property 'test.password'",e.getMessage());
}
cl.getAllConfigs();
assertEquals(cl.getAllConfigs().size(),4);
Config v1=cl.getConfigByVersion("hdfs-site",1l);
Config v2=cl.getConfigByVersion("hdfs-site",2l);
Config v3=cl.getConfigByVersion("hdfs-site",3l);
Config v4=cl.getConfigByVersion("hdfs-site",4l);
assertEquals(v1.getProperties().get("test.password"),"first");
assertEquals(v2.getProperties().get("test.password"),"first");
assertEquals(v3.getProperties().get("test.password"),"brandNewPassword");
assertFalse(v4.getProperties().containsKey("test.password"));
final ConfigurationRequest configRequest=new ConfigurationRequest(clusterName,"hdfs-site",null,null,null);
configRequest.setIncludeProperties(true);
Set requestedConfigs=controller.getConfigurations(new HashSet(){
{
add(configRequest);
}
}
);
for ( ConfigurationResponse resp : requestedConfigs) {
String secretName="SECRET:hdfs-site:" + resp.getVersion().toString() + ":test.password";
if (resp.getConfigs().containsKey("test.password")) {
assertEquals(resp.getConfigs().get("test.password"),secretName);
}
if (resp.getConfigs().containsKey("test.password.empty")) {
assertEquals(resp.getConfigs().get("test.password.empty"),"");
}
}
}
UtilityVerifier InternalCallVerifier NullVerifier HybridVerifier
@Test public void testCreateClusterWithHostMapping() throws AmbariException, AuthorizationException {
Set hostNames=new HashSet();
hostNames.add("h1");
hostNames.add("h2");
ClusterRequest r=new ClusterRequest(null,"c1","HDP-0.1",hostNames);
try {
controller.createCluster(r);
fail("Expected create cluster to fail for invalid hosts");
}
catch ( Exception e) {
}
try {
clusters.getCluster("c1");
fail("Expected to fail for non created cluster");
}
catch ( ClusterNotFoundException e) {
}
clusters.addHost("h1");
clusters.addHost("h2");
setOsFamily(clusters.getHost("h1"),"redhat","6.3");
setOsFamily(clusters.getHost("h2"),"redhat","6.3");
clusters.getHost("h1").persist();
clusters.getHost("h2").persist();
controller.createCluster(r);
Assert.assertNotNull(clusters.getCluster("c1"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetServiceComponentHosts() throws AmbariException, AuthorizationException {
Cluster c1=setupClusterWithHosts("c1","HDP-0.1",new ArrayList(){
{
add("h1");
}
}
,"centos5");
Service s1=serviceFactory.createNew(c1,"HDFS");
c1.addService(s1);
s1.persist();
ServiceComponent sc1=serviceComponentFactory.createNew(s1,"DATANODE");
s1.addServiceComponent(sc1);
sc1.setDesiredState(State.UNINSTALLED);
sc1.persist();
ServiceComponentHost sch1=serviceComponentHostFactory.createNew(sc1,"h1");
sc1.addServiceComponentHost(sch1);
sch1.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLING);
sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
sch1.setStackVersion(new StackId("HDP-0.1"));
sch1.persist();
sch1.updateActualConfigs(new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
);
ServiceComponentHostRequest r=new ServiceComponentHostRequest(c1.getClusterName(),null,null,null,null);
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
ServiceComponentHostResponse resp=resps.iterator().next();
Assert.assertEquals(c1.getClusterName(),resp.getClusterName());
Assert.assertEquals(sc1.getName(),resp.getComponentName());
Assert.assertEquals(s1.getName(),resp.getServiceName());
Assert.assertEquals(sch1.getHostName(),resp.getHostname());
Assert.assertEquals(sch1.getDesiredState().toString(),resp.getDesiredState());
Assert.assertEquals(sch1.getState().toString(),resp.getLiveState());
Assert.assertEquals(sch1.getStackVersion().getStackId(),resp.getStackVersion());
Assert.assertNotNull(resp.getActualConfigs());
Assert.assertEquals(1,resp.getActualConfigs().size());
}
InternalCallVerifier BooleanVerifier
@Test public void setRestartRequiredAfterChangeService() throws Exception {
String clusterName="c1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
StackId stackId=new StackId("HDP-2.0.7");
cluster.setDesiredStackVersion(stackId);
cluster.setCurrentStackVersion(stackId);
String hdfsService="HDFS";
String zookeeperService="ZOOKEEPER";
createService(clusterName,hdfsService,null);
createService(clusterName,zookeeperService,null);
String namenode="NAMENODE";
String datanode="DATANODE";
String hdfsClient="HDFS_CLIENT";
String zookeeperServer="ZOOKEEPER_SERVER";
createServiceComponent(clusterName,hdfsService,namenode,State.INIT);
createServiceComponent(clusterName,hdfsService,datanode,State.INIT);
createServiceComponent(clusterName,zookeeperService,zookeeperServer,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
createServiceComponentHost(clusterName,hdfsService,namenode,host1,null);
createServiceComponentHost(clusterName,hdfsService,datanode,host1,null);
createServiceComponentHost(clusterName,zookeeperService,zookeeperServer,host1,null);
ServiceComponentHost zookeeperSch=null;
for ( ServiceComponentHost sch : cluster.getServiceComponentHosts(host1)) {
if (sch.getServiceComponentName().equals(zookeeperServer)) {
zookeeperSch=sch;
}
}
assertFalse(zookeeperSch.isRestartRequired());
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,zookeeperService,zookeeperServer,host2,null);
assertFalse(zookeeperSch.isRestartRequired());
deleteServiceComponentHost(clusterName,zookeeperService,zookeeperServer,host2,null);
deleteHost(host2);
assertTrue(zookeeperSch.isRestartRequired());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceComponentHostSimple() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
try {
createServiceComponentHost(clusterName,serviceName,componentName1,host1,State.INIT);
fail("ServiceComponentHost creation should fail for invalid host" + " as host not mapped to cluster");
}
catch ( Exception e) {
}
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
try {
createServiceComponentHost(clusterName,serviceName,componentName1,host1,State.INSTALLING);
fail("ServiceComponentHost creation should fail for invalid state");
}
catch ( Exception e) {
}
try {
clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1);
fail("ServiceComponentHost creation should have failed earlier");
}
catch ( Exception e) {
}
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
try {
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
fail("ServiceComponentHost creation should fail as duplicate");
}
catch ( Exception e) {
}
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host2));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host2));
ServiceComponentHostRequest r=new ServiceComponentHostRequest(clusterName,serviceName,componentName2,null,null);
Set response=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,response.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testGetServices2() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
Clusters clusters=createNiceMock(Clusters.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ServiceResponse response=createNiceMock(ServiceResponse.class);
ServiceRequest request1=new ServiceRequest("cluster1","service1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createStrictMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(cluster.getService("service1")).andReturn(service);
expect(service.convertToResponse()).andReturn(response);
replay(maintHelper,injector,clusters,cluster,service,response);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
Set setResponses=ServiceResourceProviderTest.getServices(controller,setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(1,setResponses.size());
assertTrue(setResponses.contains(response));
verify(injector,clusters,cluster,service,response);
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDeleteHost() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
String host3="h3";
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
installService(clusterName,serviceName,false,false);
Map hostComponents=cluster.getService(serviceName).getServiceComponent(componentName1).getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),cluster.getDesiredStackVersion().getStackId()));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
hostComponents=cluster.getService(serviceName).getServiceComponent(componentName2).getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),cluster.getDesiredStackVersion().getStackId()));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
Set requests=new HashSet();
requests.clear();
requests.add(new HostRequest(host1,clusterName,null));
try {
HostResourceProviderTest.deleteHosts(controller,requests);
fail("Expect failure deleting hosts when components exist and have not been deleted.");
}
catch ( Exception e) {
}
Set schRequests=new HashSet();
schRequests.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,"DISABLED"));
schRequests.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName2,host1,"DISABLED"));
updateHostComponents(schRequests,new HashMap(),false);
schRequests.clear();
schRequests.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
schRequests.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName2,host1,null));
schRequests.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName3,host1,null));
controller.deleteHostComponents(schRequests);
Assert.assertEquals(0,cluster.getServiceComponentHosts(host1).size());
requests.clear();
requests.add(new HostRequest(host1,null,null));
try {
HostResourceProviderTest.deleteHosts(controller,requests);
}
catch ( Exception e) {
fail("Did not expect an error deleting the host from the cluster. Error: " + e.getMessage());
}
Assert.assertFalse(clusters.getHostsForCluster(clusterName).containsKey(host1));
Assert.assertFalse(clusters.getClustersForHost(host1).contains(cluster));
requests.clear();
requests.add(new HostRequest(host2,clusterName,null));
try {
HostResourceProviderTest.deleteHosts(controller,requests);
}
catch ( Exception e) {
fail("Did not expect an error deleting the host from the cluster. Error: " + e.getMessage());
}
Assert.assertFalse(clusters.getHostsForCluster(clusterName).containsKey(host2));
Assert.assertFalse(clusters.getClustersForHost(host2).contains(cluster));
requests.clear();
requests.add(new HostRequest(host1,null,null));
try {
HostResourceProviderTest.deleteHosts(controller,requests);
Assert.fail("Expected a HostNotFoundException trying to remove a host that was already deleted.");
}
catch ( HostNotFoundException e) {
}
try {
clusters.getHost(host1);
Assert.fail("Expected a HostNotFoundException.");
}
catch ( HostNotFoundException e) {
}
requests.clear();
requests.add(new HostRequest(host3,null,null));
try {
HostResourceProviderTest.deleteHosts(controller,requests);
Assert.fail("Expected a HostNotFoundException trying to remove a host that was never added.");
}
catch ( HostNotFoundException e) {
}
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteComponentsOnHost() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
addHostToCluster(host1,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
installService(clusterName,serviceName,false,false);
Map hostComponents=cluster.getService(serviceName).getServiceComponent(componentName1).getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),cluster.getDesiredStackVersion().getStackId()));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
hostComponents=cluster.getService(serviceName).getServiceComponent(componentName2).getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),cluster.getDesiredStackVersion().getStackId()));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
ServiceComponentHost sch=cluster.getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1);
Assert.assertNotNull(sch);
sch.handleEvent(new ServiceComponentHostStartEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
sch.handleEvent(new ServiceComponentHostStartedEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
Set schRequests=new HashSet();
schRequests.add(new ServiceComponentHostRequest(clusterName,null,null,host1,null));
try {
controller.deleteHostComponents(schRequests);
fail("Expected exception while deleting all host components.");
}
catch ( AmbariException e) {
}
Assert.assertEquals(3,cluster.getServiceComponentHosts(host1).size());
sch.handleEvent(new ServiceComponentHostStopEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
sch.handleEvent(new ServiceComponentHostStoppedEvent(sch.getServiceComponentName(),sch.getHostName(),System.currentTimeMillis()));
schRequests.clear();
schRequests.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,"DISABLED"));
updateHostComponents(schRequests,new HashMap(),false);
schRequests.clear();
schRequests.add(new ServiceComponentHostRequest(clusterName,null,null,host1,null));
controller.deleteHostComponents(schRequests);
Assert.assertEquals(0,cluster.getServiceComponentHosts(host1).size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateRepoUrl() throws Exception {
String INCORRECT_URL_2="http://bar.com/foo";
RepositoryInfo repo=ambariMetaInfo.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
assertNotNull(repo);
assertNotNull(repo.getBaseUrl());
String original=repo.getBaseUrl();
repo=ambariMetaInfo.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
assertEquals(original,repo.getBaseUrl());
ambariMetaInfo.updateRepoBaseURL(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID,INCORRECT_BASE_URL);
repo=ambariMetaInfo.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
assertEquals(INCORRECT_BASE_URL,repo.getBaseUrl());
assertEquals(original,repo.getDefaultBaseUrl());
ambariMetaInfo.updateRepoBaseURL(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID,INCORRECT_URL_2);
repo=ambariMetaInfo.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
assertFalse(INCORRECT_BASE_URL.equals(repo.getBaseUrl()));
assertEquals(INCORRECT_URL_2,repo.getBaseUrl());
assertEquals(original,repo.getDefaultBaseUrl());
Configuration configuration=injector.getInstance(Configuration.class);
Properties properties=configuration.getProperties();
properties.setProperty(Configuration.METADATA_DIR_PATH,"src/test/resources/stacks");
properties.setProperty(Configuration.SERVER_VERSION_FILE,"src/test/resources/version");
Configuration newConfiguration=new Configuration(properties);
AmbariMetaInfo ami=new AmbariMetaInfo(newConfiguration);
injector.injectMembers(ami);
ami.init();
repo=ami.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
assertEquals(INCORRECT_URL_2,repo.getBaseUrl());
assertNotNull(repo.getDefaultBaseUrl());
assertEquals(original,repo.getDefaultBaseUrl());
ami.updateRepoBaseURL(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID,original);
repo=ami.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
assertEquals(original,repo.getBaseUrl());
assertEquals(original,repo.getDefaultBaseUrl());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testClientServiceSmokeTests() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="PIG";
createService(clusterName,serviceName,null);
String componentName1="PIG";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,null,componentName1,host2,null);
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
RequestStatusResponse trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
Assert.assertEquals(State.INIT,sch.getState());
}
}
List taskStatuses=trackAction.getTasks();
Assert.assertEquals(2,taskStatuses.size());
List stages=actionDB.getAllStages(trackAction.getRequestId());
Assert.assertEquals(1,stages.size());
Assert.assertEquals("Called from a test",stages.get(0).getRequestContext());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
sch.setState(State.INSTALLED);
}
}
r=new ServiceRequest(clusterName,serviceName,State.STARTED.toString());
requests.clear();
requests.add(r);
injector.getInstance(ActionMetadata.class).addServiceCheckAction("PIG");
trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertNotNull(trackAction);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch.getState());
}
}
stages=actionDB.getAllStages(trackAction.getRequestId());
for ( Stage s : stages) {
LOG.info("Stage dump : " + s.toString());
}
Assert.assertEquals(1,stages.size());
taskStatuses=trackAction.getTasks();
Assert.assertEquals(1,taskStatuses.size());
Assert.assertEquals(Role.PIG_SERVICE_CHECK.toString(),taskStatuses.get(0).getRole());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReConfigureService() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
sch.setState(State.INSTALLED);
}
}
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2, cr3;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
cr3=new ConfigurationRequest(clusterName,"core-site","version122",configs,null);
controller.createConfiguration(cr1);
controller.createConfiguration(cr2);
controller.createConfiguration(cr3);
Cluster cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
ServiceComponent sc1=s.getServiceComponent(componentName1);
ServiceComponent sc2=s.getServiceComponent(componentName2);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
Set schReqs=new HashSet();
Set scReqs=new HashSet();
Set sReqs=new HashSet();
Map configVersions=new HashMap();
configVersions.clear();
configVersions.put("core-site","version1");
configVersions.put("hdfs-site","version1");
schReqs.clear();
schReqs.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
Assert.assertNull(updateHostComponents(schReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("core-site","version122");
schReqs.clear();
schReqs.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
Assert.assertNull(updateHostComponents(schReqs,Collections.emptyMap(),true));
entityManager.clear();
configVersions.clear();
configVersions.put("core-site","version1");
configVersions.put("hdfs-site","version1");
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName2,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName1,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("core-site","version122");
scReqs.clear();
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName2,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
scReqs.clear();
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName1,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
entityManager.clear();
configVersions.clear();
configVersions.put("core-site","version1");
configVersions.put("hdfs-site","version1");
sReqs.clear();
sReqs.add(new ServiceRequest(clusterName,serviceName,null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller,sReqs,mapRequestProps,true,false));
configVersions.clear();
configVersions.put("core-site","version122");
sReqs.clear();
sReqs.add(new ServiceRequest(clusterName,serviceName,null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller,sReqs,mapRequestProps,true,false));
entityManager.clear();
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateRepoUrlController() throws Exception {
String badUrl="http://hortonworks.com";
RepositoryInfo repo=ambariMetaInfo.getRepository(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
RepositoryRequest request=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
request.setBaseUrl(badUrl);
Set requests=new HashSet();
requests.add(request);
try {
controller.updateRepositories(requests);
Assert.fail("Expected a bad URL to throw an exception");
}
catch ( Exception e) {
assertNotNull(e);
Assert.assertTrue(e.getMessage().contains(badUrl));
}
request.setVerifyBaseUrl(false);
controller.updateRepositories(requests);
Assert.assertEquals(request.getBaseUrl(),repo.getBaseUrl());
requests.clear();
request=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
request.setBaseUrl("https://hortonworks.com");
requests.add(request);
controller.updateRepositories(requests);
requests.clear();
request=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
request.setBaseUrl("pro://hortonworks.com");
requests.add(request);
try {
controller.updateRepositories(requests);
}
catch ( Exception e) {
assertTrue(e.getMessage().contains("Could not access base url"));
}
requests.clear();
request=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
request.setBaseUrl("http://rrr1.cccc");
requests.add(request);
try {
controller.updateRepositories(requests);
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
}
requests.clear();
request=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
request.setBaseUrl(repo.getDefaultBaseUrl());
requests.add(request);
try {
controller.updateRepositories(requests);
Assert.assertEquals(repo.getBaseUrl(),repo.getDefaultBaseUrl());
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
LOG.error("Can not complete test. " + exceptionMsg);
}
String baseUrl=repo.getDefaultBaseUrl();
if (!baseUrl.endsWith("/")) {
baseUrl+="/";
}
backingProperties.setProperty(Configuration.REPO_SUFFIX_KEY_UBUNTU,"/repodata/repomd.xml");
Assert.assertTrue(baseUrl.endsWith("/") && configuration.getRepoValidationSuffixes("ubuntu12")[0].startsWith("/"));
request.setBaseUrl(baseUrl);
try {
controller.updateRepositories(requests);
Assert.assertEquals(baseUrl,repo.getBaseUrl());
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
LOG.error("Can not complete test. " + exceptionMsg);
}
backingProperties.setProperty(Configuration.REPO_SUFFIX_KEY_DEFAULT,"repodata/repomd.xml");
Assert.assertTrue(baseUrl.endsWith("/") && !configuration.getRepoValidationSuffixes("redhat6")[0].startsWith("/"));
request.setBaseUrl(baseUrl);
try {
controller.updateRepositories(requests);
Assert.assertEquals(baseUrl,repo.getBaseUrl());
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
LOG.error("Can not complete test. " + exceptionMsg);
}
baseUrl=baseUrl.substring(0,baseUrl.length() - 1);
Assert.assertTrue(!baseUrl.endsWith("/") && !configuration.getRepoValidationSuffixes("redhat6")[0].startsWith("/"));
request.setBaseUrl(baseUrl);
try {
controller.updateRepositories(requests);
Assert.assertEquals(baseUrl,repo.getBaseUrl());
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
LOG.error("Can not complete test. " + exceptionMsg);
}
backingProperties.setProperty(Configuration.REPO_SUFFIX_KEY_DEFAULT,"/repodata/repomd.xml");
Assert.assertTrue(!baseUrl.endsWith("/") && configuration.getRepoValidationSuffixes("suse11")[0].startsWith("/"));
request.setBaseUrl(baseUrl);
try {
controller.updateRepositories(requests);
Assert.assertEquals(baseUrl,repo.getBaseUrl());
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
LOG.error("Can not complete test. " + exceptionMsg);
}
backingProperties.setProperty(Configuration.REPO_SUFFIX_KEY_UBUNTU,"/foo/bar.xml,/repodata/repomd.xml");
Assert.assertTrue(configuration.getRepoValidationSuffixes("ubuntu12").length > 1);
request.setBaseUrl(baseUrl);
try {
controller.updateRepositories(requests);
Assert.assertEquals(baseUrl,repo.getBaseUrl());
}
catch ( Exception e) {
String exceptionMsg=e.getMessage();
assertTrue(exceptionMsg.contains("Could not access base url"));
LOG.error("Can not complete test. " + exceptionMsg);
}
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPassiveSkipServices() throws Exception {
String clusterName="c1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName1="HDFS";
String serviceName2="MAPREDUCE";
createService(clusterName,serviceName1,null);
createService(clusterName,serviceName2,null);
String componentName1_1="NAMENODE";
String componentName1_2="DATANODE";
String componentName1_3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName1,componentName1_1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName1_2,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName1_3,State.INIT);
String componentName2_1="JOBTRACKER";
String componentName2_2="TASKTRACKER";
createServiceComponent(clusterName,serviceName2,componentName2_1,State.INIT);
createServiceComponent(clusterName,serviceName2,componentName2_2,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,serviceName1,componentName1_1,host1,null);
createServiceComponentHost(clusterName,serviceName1,componentName1_2,host1,null);
createServiceComponentHost(clusterName,serviceName1,componentName1_2,host2,null);
createServiceComponentHost(clusterName,serviceName2,componentName2_1,host1,null);
createServiceComponentHost(clusterName,serviceName2,componentName2_2,host2,null);
MaintenanceStateHelper maintenanceStateHelper=MaintenanceStateHelperTest.getMaintenanceStateHelperInstance(clusters);
installService(clusterName,serviceName1,false,false,maintenanceStateHelper,null);
installService(clusterName,serviceName2,false,false,maintenanceStateHelper,null);
startService(clusterName,serviceName1,false,false,maintenanceStateHelper);
startService(clusterName,serviceName2,false,false,maintenanceStateHelper);
Map requestProperties=new HashMap();
requestProperties.put("context","Called from a test");
Cluster cluster=clusters.getCluster(clusterName);
for ( Service service : cluster.getServices().values()) {
Assert.assertEquals(State.STARTED,service.getDesiredState());
}
Service service2=cluster.getService(serviceName2);
service2.setMaintenanceState(MaintenanceState.ON);
Set srs=new HashSet();
srs.add(new ServiceRequest(clusterName,serviceName1,State.INSTALLED.name()));
srs.add(new ServiceRequest(clusterName,serviceName2,State.INSTALLED.name()));
RequestStatusResponse rsr=ServiceResourceProviderTest.updateServices(controller,srs,requestProperties,false,false,maintenanceStateHelper);
for ( ShortTaskStatus sts : rsr.getTasks()) {
String role=sts.getRole();
Assert.assertFalse(role.equals(componentName2_1));
Assert.assertFalse(role.equals(componentName2_2));
}
for ( Service service : cluster.getServices().values()) {
if (service.getName().equals(serviceName2)) {
Assert.assertEquals(State.STARTED,service.getDesiredState());
}
else {
Assert.assertEquals(State.INSTALLED,service.getDesiredState());
}
}
service2.setMaintenanceState(MaintenanceState.OFF);
ServiceResourceProviderTest.updateServices(controller,srs,requestProperties,false,false,maintenanceStateHelper);
for ( Service service : cluster.getServices().values()) {
Assert.assertEquals(State.INSTALLED,service.getDesiredState());
}
startService(clusterName,serviceName1,false,false,maintenanceStateHelper);
startService(clusterName,serviceName2,false,false,maintenanceStateHelper);
Host h1=clusters.getHost(host1);
h1.setMaintenanceState(cluster.getClusterId(),MaintenanceState.ON);
srs=new HashSet();
srs.add(new ServiceRequest(clusterName,serviceName1,State.INSTALLED.name()));
srs.add(new ServiceRequest(clusterName,serviceName2,State.INSTALLED.name()));
rsr=ServiceResourceProviderTest.updateServices(controller,srs,requestProperties,false,false,maintenanceStateHelper);
for ( ShortTaskStatus sts : rsr.getTasks()) {
Assert.assertFalse(sts.getHostName().equals(host1));
}
h1.setMaintenanceState(cluster.getClusterId(),MaintenanceState.OFF);
startService(clusterName,serviceName2,false,false,maintenanceStateHelper);
service2.setMaintenanceState(MaintenanceState.ON);
ServiceRequest sr=new ServiceRequest(clusterName,serviceName2,State.INSTALLED.name());
rsr=ServiceResourceProviderTest.updateServices(controller,Collections.singleton(sr),requestProperties,false,false,maintenanceStateHelper);
Assert.assertTrue("Service start request defaults to Cluster operation level," + "command does not create tasks",rsr == null || rsr.getTasks().size() == 0);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReConfigureServiceClient() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName1="HDFS";
String serviceName2="MAPREDUCE";
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
String componentName4="JOBTRACKER";
String componentName5="TASKTRACKER";
String componentName6="MAPREDUCE_CLIENT";
createService(clusterName,serviceName1,null);
createService(clusterName,serviceName2,null);
createServiceComponent(clusterName,serviceName1,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName3,State.INIT);
createServiceComponent(clusterName,serviceName2,componentName4,State.INIT);
createServiceComponent(clusterName,serviceName2,componentName5,State.INIT);
createServiceComponent(clusterName,serviceName2,componentName6,State.INIT);
String host1="h1";
String host2="h2";
String host3="h3";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
addHostToCluster(host3,clusterName);
createServiceComponentHost(clusterName,serviceName1,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName1,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName2,componentName4,host1,null);
createServiceComponentHost(clusterName,serviceName2,componentName5,host1,null);
createServiceComponentHost(clusterName,serviceName1,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName1,componentName3,host2,null);
createServiceComponentHost(clusterName,serviceName2,componentName6,host2,null);
createServiceComponentHost(clusterName,serviceName1,componentName3,host3,null);
createServiceComponentHost(clusterName,serviceName2,componentName6,host3,null);
Map configs=new HashMap();
configs.put("a","b");
Map configs2=new HashMap();
configs2.put("c","d");
Map configs3=new HashMap();
ConfigurationRequest cr1, cr2, cr3, cr4;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
cr4=new ConfigurationRequest(clusterName,"kerberos-env","version1",configs3,null);
ConfigFactory cf=injector.getInstance(ConfigFactory.class);
Config config1=cf.createNew(cluster,"kerberos-env",new HashMap(),new HashMap>());
config1.setTag("version1");
cluster.addConfig(config1);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr4));
controller.updateClusters(Collections.singleton(crReq),null);
long requestId1=installService(clusterName,serviceName1,true,false);
List stages=actionDB.getAllStages(requestId1);
Assert.assertEquals(3,stages.get(0).getOrderedHostRoleCommands().get(0).getExecutionCommandWrapper().getExecutionCommand().getConfigurationTags().size());
installService(clusterName,serviceName2,false,false);
startService(clusterName,serviceName1,true,false);
startService(clusterName,serviceName2,true,false);
cr3=new ConfigurationRequest(clusterName,"core-site","version122",configs2,null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr3));
controller.updateClusters(Collections.singleton(crReq),null);
stopService(clusterName,serviceName1,false,false);
stopService(clusterName,serviceName2,false,false);
long requestId2=startService(clusterName,serviceName1,true,true);
long requestId3=startService(clusterName,serviceName2,true,true);
stages=new ArrayList<>();
stages.addAll(actionDB.getAllStages(requestId2));
stages.addAll(actionDB.getAllStages(requestId3));
HostRoleCommand hdfsCmdHost3=null;
HostRoleCommand hdfsCmdHost2=null;
HostRoleCommand mapRedCmdHost2=null;
HostRoleCommand mapRedCmdHost3=null;
for ( Stage stage : stages) {
List hrcs=stage.getOrderedHostRoleCommands();
for ( HostRoleCommand hrc : hrcs) {
LOG.debug("role: " + hrc.getRole());
if (hrc.getRole().toString().equals("HDFS_CLIENT")) {
if (hrc.getHostName().equals(host3)) {
hdfsCmdHost3=hrc;
}
else if (hrc.getHostName().equals(host2)) {
hdfsCmdHost2=hrc;
}
}
if (hrc.getRole().toString().equals("MAPREDUCE_CLIENT")) {
if (hrc.getHostName().equals(host2)) {
mapRedCmdHost2=hrc;
}
else if (hrc.getHostName().equals(host3)) {
mapRedCmdHost3=hrc;
}
}
}
}
Assert.assertNotNull(hdfsCmdHost3);
Assert.assertNotNull(hdfsCmdHost2);
ExecutionCommand execCmd=hdfsCmdHost3.getExecutionCommandWrapper().getExecutionCommand();
Assert.assertEquals(3,execCmd.getConfigurationTags().size());
Assert.assertEquals("version122",execCmd.getConfigurationTags().get("core-site").get("tag"));
Assert.assertEquals("d",execCmd.getConfigurations().get("core-site").get("c"));
Assert.assertNotNull(mapRedCmdHost2);
Assert.assertNotNull(mapRedCmdHost3);
stopService(clusterName,serviceName1,false,false);
stopService(clusterName,serviceName2,false,false);
clusters.getHost(host2).setState(HostState.HEARTBEAT_LOST);
requestId3=startService(clusterName,serviceName2,true,true);
stages=actionDB.getAllStages(requestId3);
HostRoleCommand clientWithHostDown=null;
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().toString().equals("MAPREDUCE_CLIENT") && hrc.getHostName().equals(host2)) {
clientWithHostDown=hrc;
}
}
}
Assert.assertNull(clientWithHostDown);
Assert.assertEquals(State.STARTED,clusters.getCluster(clusterName).getService("MAPREDUCE").getServiceComponent("TASKTRACKER").getServiceComponentHost(host1).getState());
Assert.assertEquals(State.STARTED,clusters.getCluster(clusterName).getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHost(host1).getState());
Assert.assertEquals(State.STARTED,clusters.getCluster(clusterName).getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHost(host1).getState());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCreateServiceWithInvalidInfo() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
String serviceName="HDFS";
try {
createService(clusterName,serviceName,State.INSTALLING);
fail("Service creation should fail for invalid state");
}
catch ( Exception e) {
}
try {
clusters.getCluster(clusterName).getService(serviceName);
fail("Service creation should have failed");
}
catch ( Exception e) {
}
try {
createService(clusterName,serviceName,State.INSTALLED);
fail("Service creation should fail for invalid initial state");
}
catch ( Exception e) {
}
createService(clusterName,serviceName,null);
String serviceName2="MAPREDUCE";
createService(clusterName,serviceName2,State.INIT);
ServiceRequest r=new ServiceRequest(clusterName,null,null);
Set response=ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
Assert.assertEquals(2,response.size());
for ( ServiceResponse svc : response) {
Assert.assertTrue(svc.getServiceName().equals(serviceName) || svc.getServiceName().equals(serviceName2));
Assert.assertEquals("HDP-0.1",svc.getDesiredStackVersion());
Assert.assertEquals(State.INIT.toString(),svc.getDesiredState());
}
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testServiceComponentHostsWithDecommissioned() throws Exception {
final String host1="h1";
final String host2="h2";
String clusterName="foo1";
setupClusterWithHosts(clusterName,"HDP-2.0.7",new ArrayList(){
{
add(host1);
add(host2);
}
}
,"centos5");
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
installService(clusterName,serviceName,false,false);
startService(clusterName,serviceName,false,false);
Service s1=clusters.getCluster(clusterName).getService(serviceName);
s1.getServiceComponent(componentName2).getServiceComponentHost(host1).setComponentAdminState(HostComponentAdminState.DECOMMISSIONED);
s1.getServiceComponent(componentName2).getServiceComponentHost(host2).setComponentAdminState(HostComponentAdminState.INSERVICE);
ServiceComponentHostRequest r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(5,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setAdminState("DECOMMISSIONED");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setAdminState("INSERVICE");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setAdminState("INSTALLED");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(0,resps.size());
r=new ServiceComponentHostRequest(clusterName,"HDFS","DATANODE",host2,null);
r.setAdminState("DECOMMISSIONED");
try {
updateHostComponents(Collections.singleton(r),new HashMap(),false);
Assert.fail("Must throw exception when decommission attribute is updated.");
}
catch ( IllegalArgumentException ex) {
Assert.assertTrue(ex.getMessage().contains("Property adminState cannot be modified through update"));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetServiceComponents() throws AmbariException {
clusters.addCluster("c1",new StackId("HDP-0.2"));
Cluster c1=clusters.getCluster("c1");
c1.setDesiredStackVersion(new StackId("HDP-0.2"));
Service s1=serviceFactory.createNew(c1,"HDFS");
c1.addService(s1);
s1.setDesiredState(State.INSTALLED);
s1.persist();
ServiceComponent sc1=serviceComponentFactory.createNew(s1,"DATANODE");
s1.addServiceComponent(sc1);
sc1.persist();
sc1.setDesiredStackVersion(new StackId("HDP-0.1"));
sc1.setDesiredState(State.UNINSTALLED);
ServiceComponentRequest r=new ServiceComponentRequest("c1",s1.getName(),sc1.getName(),null);
Set resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(1,resps.size());
ServiceComponentResponse resp=resps.iterator().next();
Assert.assertEquals(c1.getClusterName(),resp.getClusterName());
Assert.assertEquals(sc1.getName(),resp.getComponentName());
Assert.assertEquals(s1.getName(),resp.getServiceName());
Assert.assertEquals("HDP-0.1",resp.getDesiredStackVersion());
Assert.assertEquals(sc1.getDesiredState().toString(),resp.getDesiredState());
Assert.assertEquals(c1.getClusterId(),resp.getClusterId().longValue());
}
APIUtilityVerifier BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigsAttachedToServiceChecks() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
installService(clusterName,serviceName,false,false);
long requestId=startService(clusterName,serviceName,true,false);
List stages=actionDB.getAllStages(requestId);
boolean serviceCheckFound=false;
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.HDFS_SERVICE_CHECK)) {
serviceCheckFound=true;
Assert.assertEquals(2,hrc.getExecutionCommandWrapper().getExecutionCommand().getConfigurationTags().size());
}
}
}
Type type=new TypeToken>(){
}
.getType();
for ( Stage stage : actionDB.getAllStages(requestId)) {
Map hostParamsStage=StageUtils.getGson().fromJson(stage.getHostParamsStage(),type);
Assert.assertNotNull(hostParamsStage.get("jdk_location"));
}
Assert.assertEquals(true,serviceCheckFound);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigGroupOverridesWithDecommissionDatanode() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-2.0.7"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
installService(clusterName,serviceName,false,false);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2;
cr1=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
startService(clusterName,serviceName,false,false);
configs=new HashMap();
configs.put("a","c");
final Config config=new ConfigImpl("hdfs-site");
config.setProperties(configs);
config.setTag("version122");
Long groupId=createConfigGroup(clusters.getCluster(clusterName),"g1","t1",new ArrayList(){
{
add("h1");
add("h2");
}
}
,new ArrayList(){
{
add(config);
}
}
);
Assert.assertNotNull(groupId);
cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
Assert.assertEquals(State.STARTED,s.getDesiredState());
Map params=new HashMap(){
{
put("test","test");
put("excluded_hosts"," h1 ");
}
}
;
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS","NAMENODE",null);
ExecuteActionRequest request=new ExecuteActionRequest(clusterName,"DECOMMISSION",params,false);
request.getResourceFilters().add(resourceFilter);
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
RequestStatusResponse response=controller.createAction(request,requestProperties);
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
ExecutionCommand execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertNotNull(storedTasks);
Assert.assertNotNull(execCmd.getConfigurationTags().get("hdfs-site"));
Assert.assertEquals(1,storedTasks.size());
HostRoleCommand command=storedTasks.get(0);
Assert.assertEquals(Role.NAMENODE,command.getRole());
Assert.assertEquals(RoleCommand.CUSTOM_COMMAND,command.getRoleCommand());
Assert.assertEquals("DECOMMISSION",execCmd.getHostLevelParams().get("custom_command"));
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServicesWithInvalidRequest() throws AmbariException, AuthorizationException {
Set set1=new HashSet();
try {
set1.clear();
ServiceRequest rInvalid=new ServiceRequest(null,null,null);
set1.add(rInvalid);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for invalid requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceRequest rInvalid=new ServiceRequest("foo",null,null);
set1.add(rInvalid);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for invalid requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceRequest rInvalid=new ServiceRequest("foo","bar",null);
set1.add(rInvalid);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for invalid cluster");
}
catch ( AmbariException e) {
Assert.assertTrue(checkExceptionType(e,ClusterNotFoundException.class));
}
clusters.addCluster("foo",new StackId("HDP-0.1"));
clusters.addCluster("bar",new StackId("HDP-0.1"));
try {
set1.clear();
ServiceRequest valid1=new ServiceRequest("foo","HDFS",null);
ServiceRequest valid2=new ServiceRequest("foo","HDFS",null);
set1.add(valid1);
set1.add(valid2);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for invalid requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceRequest valid1=new ServiceRequest("foo","bar",null);
set1.add(valid1);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for invalid service");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceRequest valid1=new ServiceRequest("foo","HDFS",null);
ServiceRequest valid2=new ServiceRequest("bar","HDFS",null);
set1.add(valid1);
set1.add(valid2);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for multiple clusters");
}
catch ( Exception e) {
}
Assert.assertNotNull(clusters.getCluster("foo"));
Assert.assertEquals(0,clusters.getCluster("foo").getServices().size());
set1.clear();
ServiceRequest valid=new ServiceRequest("foo","HDFS",null);
set1.add(valid);
ServiceResourceProviderTest.createServices(controller,set1);
try {
set1.clear();
ServiceRequest valid1=new ServiceRequest("foo","HDFS",null);
ServiceRequest valid2=new ServiceRequest("foo","HDFS",null);
set1.add(valid1);
set1.add(valid2);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for existing service");
}
catch ( Exception e) {
}
Assert.assertEquals(1,clusters.getCluster("foo").getServices().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetStackComponents() throws Exception {
StackServiceComponentRequest request=new StackServiceComponentRequest(STACK_NAME,STACK_VERSION,SERVICE_NAME,null);
Set responses=controller.getStackComponents(Collections.singleton(request));
Assert.assertEquals(STACK_COMPONENTS_CNT,responses.size());
StackServiceComponentRequest requestWithParams=new StackServiceComponentRequest(STACK_NAME,STACK_VERSION,SERVICE_NAME,COMPONENT_NAME);
Set responsesWithParams=controller.getStackComponents(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackServiceComponentResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getComponentName(),COMPONENT_NAME);
}
StackServiceComponentRequest invalidRequest=new StackServiceComponentRequest(STACK_NAME,STACK_VERSION,SERVICE_NAME,NON_EXT_VALUE);
try {
controller.getStackComponents(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceStopWhileStopping() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host2));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host2));
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
sch.setState(State.INSTALLED);
}
}
r=new ServiceRequest(clusterName,serviceName,State.STARTED.toString());
requests.clear();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (!sch.getServiceComponentName().equals("HDFS_CLIENT")) {
sch.setState(State.STARTED);
}
}
}
Assert.assertEquals(State.STARTED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
clusters.getCluster(clusterName).getService(serviceName).setDesiredState(State.STOPPING);
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (!sch.getServiceComponentName().equals("HDFS_CLIENT")) {
Assert.assertEquals(State.STARTED,sch.getDesiredState());
sch.setState(State.STOPPING);
}
else if (sch.getServiceComponentName().equals("DATANODE")) {
ServiceComponentHostRequest r1=new ServiceComponentHostRequest(clusterName,serviceName,sch.getServiceComponentName(),sch.getHostName(),State.INSTALLED.name());
Set reqs1=new HashSet();
reqs1.add(r1);
updateHostComponents(reqs1,Collections.emptyMap(),true);
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
}
}
r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
requests.clear();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (!sch.getServiceComponentName().equals("HDFS_CLIENT")) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
}
}
}
InternalCallVerifier BooleanVerifier
@Test public void testUpdateStacks() throws Exception {
StackInfo stackInfo=ambariMetaInfo.getStack(STACK_NAME,STACK_VERSION);
for ( RepositoryInfo repositoryInfo : stackInfo.getRepositories()) {
assertFalse(INCORRECT_BASE_URL.equals(repositoryInfo.getBaseUrl()));
repositoryInfo.setBaseUrl(INCORRECT_BASE_URL);
assertTrue(INCORRECT_BASE_URL.equals(repositoryInfo.getBaseUrl()));
}
controller.updateStacks();
stackInfo=ambariMetaInfo.getStack(STACK_NAME,STACK_VERSION);
for ( RepositoryInfo repositoryInfo : stackInfo.getRepositories()) {
assertFalse(INCORRECT_BASE_URL.equals(repositoryInfo.getBaseUrl()));
}
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testServiceCheckWhenHostIsUnhealthy() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
String host3="h3";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
addHostToCluster(host3,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host3,null);
installService(clusterName,serviceName,false,false);
clusters.getHost("h3").setState(HostState.UNHEALTHY);
clusters.getHost("h2").setState(HostState.HEALTHY);
long requestId=startService(clusterName,serviceName,true,false);
List commands=actionDB.getRequestTasks(requestId);
int commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.SERVICE_CHECK && command.getRole() == Role.HDFS_SERVICE_CHECK) {
Assert.assertTrue(command.getHostName().equals("h2"));
commandCount++;
}
}
Assert.assertEquals("Expect only one service check.",1,commandCount);
stopService(clusterName,serviceName,false,false);
clusters.getHost("h3").setState(HostState.HEALTHY);
clusters.getHost("h2").setState(HostState.HEARTBEAT_LOST);
requestId=startService(clusterName,serviceName,true,false);
commands=actionDB.getRequestTasks(requestId);
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.SERVICE_CHECK && command.getRole() == Role.HDFS_SERVICE_CHECK) {
Assert.assertTrue(command.getHostName().equals("h3"));
commandCount++;
}
}
Assert.assertEquals("Expect only one service check.",1,commandCount);
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS",null,null);
ExecuteActionRequest actionRequest=new ExecuteActionRequest("foo1",Role.HDFS_SERVICE_CHECK.name(),null,false);
actionRequest.getResourceFilters().add(resourceFilter);
Map requestProperties=new HashMap();
RequestStatusResponse response=controller.createAction(actionRequest,requestProperties);
commands=actionDB.getRequestTasks(response.getRequestId());
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.SERVICE_CHECK && command.getRole() == Role.HDFS_SERVICE_CHECK) {
Assert.assertTrue(command.getHostName().equals("h3"));
commandCount++;
}
}
Assert.assertEquals("Expect only one service check.",1,commandCount);
clusters.getHost("h3").setState(HostState.WAITING_FOR_HOST_STATUS_UPDATES);
clusters.getHost("h2").setState(HostState.INIT);
response=controller.createAction(actionRequest,requestProperties);
commands=actionDB.getRequestTasks(response.getRequestId());
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.SERVICE_CHECK && command.getRole() == Role.HDFS_SERVICE_CHECK) {
Assert.assertTrue(command.getHostName().equals("h3") || command.getHostName().equals("h2"));
commandCount++;
}
}
Assert.assertEquals("Expect only one service check.",1,commandCount);
Assert.assertEquals("",response.getRequestContext());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRequestStatusLogs() throws Exception {
testCreateServiceComponentHostSimple();
String clusterName="foo1";
String serviceName="HDFS";
Cluster cluster=clusters.getCluster(clusterName);
for ( Host h : clusters.getHosts()) {
h.setPrefix(Configuration.PREFIX_DIR);
}
Map configs=new HashMap();
Map properties=new HashMap();
Map> propertiesAttributes=new HashMap>();
Config c1=new ConfigImpl(cluster,"hdfs-site",properties,propertiesAttributes,injector);
c1.setTag("v1");
cluster.addConfig(c1);
c1.persist();
configs.put(c1.getType(),c1);
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
RequestStatusResponse trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
List taskStatuses=trackAction.getTasks();
Assert.assertFalse(taskStatuses.isEmpty());
for ( ShortTaskStatus task : taskStatuses) {
Assert.assertEquals("Task output logs don't match",Configuration.PREFIX_DIR + "/output-" + task.getTaskId()+ ".txt",task.getOutputLog());
Assert.assertEquals("Task error logs don't match",Configuration.PREFIX_DIR + "/errors-" + task.getTaskId()+ ".txt",task.getErrorLog());
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetServiceComponentHostsWithStaleConfigFilter() throws AmbariException, AuthorizationException {
final String host1="h1";
final String host2="h2";
Long clusterId=1L;
String clusterName="foo1";
setupClusterWithHosts(clusterName,"HDP-2.0.5",new ArrayList(){
{
add(host1);
add(host2);
}
}
,"centos5");
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
installService(clusterName,serviceName,false,false);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1;
cr1=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(clusterId,clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
startService(clusterName,serviceName,false,false);
HashMap> actualConfig=new HashMap>(){
{
put("hdfs-site",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
;
HashMap> actualConfigOld=new HashMap>(){
{
put("hdfs-site",new HashMap(){
{
put("tag","version0");
}
}
);
}
}
;
Service s1=clusters.getCluster(clusterName).getService(serviceName);
s1.getServiceComponent(componentName1).getServiceComponentHost(host1).updateActualConfigs(actualConfig);
s1.getServiceComponent(componentName2).getServiceComponentHost(host1).updateActualConfigs(actualConfig);
s1.getServiceComponent(componentName3).getServiceComponentHost(host1).updateActualConfigs(actualConfigOld);
s1.getServiceComponent(componentName2).getServiceComponentHost(host2).updateActualConfigs(actualConfigOld);
s1.getServiceComponent(componentName3).getServiceComponentHost(host2).updateActualConfigs(actualConfig);
ServiceComponentHostRequest r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(5,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setStaleConfig("true");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,null,null);
r.setStaleConfig("false");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(3,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,host1,null);
r.setStaleConfig("false");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentHostRequest(clusterName,null,null,host2,null);
r.setStaleConfig("true");
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateHostMultiple() throws AmbariException {
clusters.addHost("h1");
clusters.addHost("h2");
clusters.addHost("h3");
clusters.addCluster("c1",new StackId("HDP-0.1"));
Cluster c=clusters.getCluster("c1");
StackId stackID=new StackId("HDP-0.1");
c.setDesiredStackVersion(stackID);
c.setCurrentStackVersion(stackID);
helper.getOrCreateRepositoryVersion(stackID,stackID.getStackVersion());
c.createClusterVersion(stackID,stackID.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
setOsFamily(clusters.getHost("h1"),"redhat","5.9");
setOsFamily(clusters.getHost("h2"),"redhat","5.9");
setOsFamily(clusters.getHost("h3"),"redhat","5.9");
clusters.getHost("h1").persist();
clusters.getHost("h2").persist();
clusters.getHost("h3").persist();
String clusterName="c1";
HostRequest r1=new HostRequest("h1",clusterName,null);
HostRequest r2=new HostRequest("h2",clusterName,null);
HostRequest r3=new HostRequest("h3",null,null);
Set set1=new HashSet();
set1.add(r1);
set1.add(r2);
set1.add(r3);
HostResourceProviderTest.createHosts(controller,set1);
Assert.assertEquals(1,clusters.getClustersForHost("h1").size());
Assert.assertEquals(1,clusters.getClustersForHost("h2").size());
Assert.assertEquals(0,clusters.getClustersForHost("h3").size());
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testComponentCategorySentWithRestart() throws AmbariException, AuthorizationException {
setupClusterWithHosts("c1","HDP-2.0.7",new ArrayList(){
{
add("h1");
}
}
,"centos5");
Cluster cluster=clusters.getCluster("c1");
cluster.setDesiredStackVersion(new StackId("HDP-2.0.7"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.7"));
ConfigFactory cf=injector.getInstance(ConfigFactory.class);
Config config1=cf.createNew(cluster,"global",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=cf.createNew(cluster,"core-site",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config2.setTag("version1");
cluster.addConfig(config1);
cluster.addConfig(config2);
Service hdfs=cluster.addService("HDFS");
hdfs.persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h1").persist();
installService("c1","HDFS",false,false);
startService("c1","HDFS",false,false);
Cluster c=clusters.getCluster("c1");
Service s=c.getService("HDFS");
Assert.assertEquals(State.STARTED,s.getDesiredState());
for ( ServiceComponent sc : s.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (sc.isClientComponent()) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
else {
Assert.assertEquals(State.STARTED,sch.getDesiredState());
}
}
}
Map params=new HashMap(){
{
put("test","test");
}
}
;
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS","HDFS_CLIENT",new ArrayList(){
{
add("h1");
}
}
);
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1","RESTART",params,false);
actionRequest.getResourceFilters().add(resourceFilter);
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
requestProperties.put("hdfs_client","abc");
RequestStatusResponse response=controller.createAction(actionRequest,requestProperties);
List stages=actionDB.getAllStages(response.getRequestId());
Assert.assertNotNull(stages);
HostRoleCommand hrc=null;
Type type=new TypeToken>(){
}
.getType();
for ( Stage stage : stages) {
for ( HostRoleCommand cmd : stage.getOrderedHostRoleCommands()) {
if (cmd.getRole().equals(Role.HDFS_CLIENT)) {
hrc=cmd;
}
Map hostParamStage=StageUtils.getGson().fromJson(stage.getHostParamsStage(),type);
Assert.assertTrue(hostParamStage.containsKey(ExecutionCommand.KeyNames.DB_DRIVER_FILENAME));
Assert.assertTrue(hostParamStage.containsKey(ExecutionCommand.KeyNames.MYSQL_JDBC_URL));
Assert.assertTrue(hostParamStage.containsKey(ExecutionCommand.KeyNames.ORACLE_JDBC_URL));
}
}
Assert.assertNotNull(hrc);
Assert.assertEquals("RESTART HDFS/HDFS_CLIENT",hrc.getCommandDetail());
Map roleParams=hrc.getExecutionCommandWrapper().getExecutionCommand().getRoleParams();
Assert.assertNotNull(roleParams);
Assert.assertEquals("CLIENT",roleParams.get(ExecutionCommand.KeyNames.COMPONENT_CATEGORY));
Assert.assertTrue(hrc.getExecutionCommandWrapper().getExecutionCommand().getCommandParams().containsKey("hdfs_client"));
Assert.assertEquals("abc",hrc.getExecutionCommandWrapper().getExecutionCommand().getCommandParams().get("hdfs_client"));
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testServiceComponentHostUpdateStackId() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
String serviceName1="HDFS";
createService(clusterName,serviceName1,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
createServiceComponent(clusterName,serviceName1,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName2,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Set set1=new HashSet();
ServiceComponentHostRequest r1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INIT.toString());
ServiceComponentHostRequest r2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INIT.toString());
ServiceComponentHostRequest r3=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host1,State.INIT.toString());
set1.add(r1);
set1.add(r2);
set1.add(r3);
controller.createHostComponents(set1);
Cluster c1=clusters.getCluster(clusterName);
Service s1=c1.getService(serviceName1);
ServiceComponent sc1=s1.getServiceComponent(componentName1);
ServiceComponent sc2=s1.getServiceComponent(componentName2);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
ServiceComponentHost sch2=sc1.getServiceComponentHost(host2);
ServiceComponentHost sch3=sc2.getServiceComponentHost(host1);
s1.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.INSTALLED);
sc2.setDesiredState(State.INSTALLED);
ServiceComponentHostRequest req1;
ServiceComponentHostRequest req2;
ServiceComponentHostRequest req3;
Set reqs=new HashSet();
StackId newStack=new StackId("HDP-0.2");
StackId oldStack=new StackId("HDP-0.1");
c1.setCurrentStackVersion(newStack);
c1.setDesiredStackVersion(newStack);
sch1.setState(State.INSTALLED);
sch2.setState(State.UPGRADING);
sch1.setDesiredState(State.INSTALLED);
sch2.setDesiredState(State.INSTALLED);
sch1.setStackVersion(oldStack);
sch2.setStackVersion(oldStack);
sch1.setDesiredStackVersion(newStack);
sch2.setDesiredStackVersion(oldStack);
reqs.clear();
req1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INSTALLED.toString());
req1.setDesiredStackId("HDP-0.2");
reqs.add(req1);
req2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INSTALLED.toString());
req2.setDesiredStackId("HDP-0.2");
reqs.add(req2);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","testServiceComponentHostUpdateStackId");
RequestStatusResponse resp=updateHostComponents(reqs,mapRequestProps,true);
List stages=actionDB.getAllStages(resp.getRequestId());
Assert.assertEquals(1,stages.size());
Assert.assertEquals(2,stages.get(0).getOrderedHostRoleCommands().size());
Assert.assertEquals("testServiceComponentHostUpdateStackId",stages.get(0).getRequestContext());
Assert.assertEquals(State.UPGRADING,sch1.getState());
Assert.assertEquals(State.UPGRADING,sch2.getState());
sch1.refresh();
Assert.assertTrue(sch1.getDesiredStackVersion().compareTo(newStack) == 0);
sch2.refresh();
Assert.assertTrue(sch2.getDesiredStackVersion().compareTo(newStack) == 0);
for ( HostRoleCommand command : stages.get(0).getOrderedHostRoleCommands()) {
ExecutionCommand execCommand=command.getExecutionCommandWrapper().getExecutionCommand();
Assert.assertTrue(execCommand.getCommandParams().containsKey("source_stack_version"));
Assert.assertTrue(execCommand.getCommandParams().containsKey("target_stack_version"));
Assert.assertEquals(RoleCommand.UPGRADE,execCommand.getRoleCommand());
}
sch1.setState(State.INSTALLED);
sch1.setDesiredState(State.INSTALLED);
sch2.setState(State.UPGRADING);
sch2.setDesiredState(State.INSTALLED);
sch3.setState(State.UPGRADING);
sch3.setDesiredState(State.INSTALLED);
sch3.setStackVersion(oldStack);
sch3.setDesiredStackVersion(newStack);
reqs.clear();
req1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INSTALLED.toString());
req1.setDesiredStackId("HDP-0.2");
reqs.add(req1);
req2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INSTALLED.toString());
req2.setDesiredStackId("HDP-0.2");
reqs.add(req2);
req3=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host1,State.INSTALLED.toString());
req3.setDesiredStackId("HDP-0.2");
reqs.add(req3);
resp=updateHostComponents(reqs,Collections.emptyMap(),true);
stages=actionDB.getAllStages(resp.getRequestId());
Assert.assertEquals(2,stages.size());
Assert.assertEquals(2,stages.get(0).getOrderedHostRoleCommands().size());
Assert.assertEquals("",stages.get(0).getRequestContext());
Assert.assertEquals(State.UPGRADING,sch1.getState());
Assert.assertEquals(State.UPGRADING,sch2.getState());
Assert.assertEquals(State.UPGRADING,sch3.getState());
sch1.refresh();
Assert.assertTrue(sch1.getDesiredStackVersion().compareTo(newStack) == 0);
sch2.refresh();
Assert.assertTrue(sch2.getDesiredStackVersion().compareTo(newStack) == 0);
sch3.refresh();
Assert.assertTrue(sch3.getDesiredStackVersion().compareTo(newStack) == 0);
for ( Stage stage : stages) {
for ( HostRoleCommand command : stage.getOrderedHostRoleCommands()) {
ExecutionCommand execCommand=command.getExecutionCommandWrapper().getExecutionCommand();
Assert.assertTrue(execCommand.getCommandParams().containsKey("source_stack_version"));
Assert.assertTrue(execCommand.getCommandParams().containsKey("target_stack_version"));
Assert.assertEquals("{\"stackName\":\"HDP\",\"stackVersion\":\"0.2\"}",execCommand.getCommandParams().get("target_stack_version"));
Assert.assertEquals(RoleCommand.UPGRADE,execCommand.getRoleCommand());
}
}
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testEmptyConfigs() throws Exception {
String clusterName="c1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
ClusterRequest cr=new ClusterRequest(cluster.getClusterId(),cluster.getClusterName(),null,null);
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest(clusterName,"typeA","v1",null,null)));
controller.updateClusters(Collections.singleton(cr),new HashMap());
Config config=cluster.getDesiredConfigByType("typeA");
Assert.assertNull(config);
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest(clusterName,"typeA","v1",new HashMap(),new HashMap>())));
controller.updateClusters(Collections.singleton(cr),new HashMap());
config=cluster.getDesiredConfigByType("typeA");
Assert.assertNotNull(config);
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest(clusterName,"typeA","v2",new HashMap(),new HashMap>())));
controller.updateClusters(Collections.singleton(cr),new HashMap());
config=cluster.getDesiredConfigByType("typeA");
Assert.assertNotNull(config);
Assert.assertEquals(Integer.valueOf(0),Integer.valueOf(config.getProperties().size()));
Map map=new HashMap();
map.clear();
map.put("c","d");
Map> attributesMap=new HashMap>();
attributesMap.put("final",new HashMap());
attributesMap.get("final").put("c","true");
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest(clusterName,"typeA","v3",map,attributesMap)));
controller.updateClusters(Collections.singleton(cr),new HashMap());
config=cluster.getDesiredConfigByType("typeA");
Assert.assertNotNull(config);
Assert.assertTrue(config.getProperties().containsKey("c"));
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest(clusterName,"typeA","v2",new HashMap(),new HashMap>())));
controller.updateClusters(Collections.singleton(cr),new HashMap());
config=cluster.getDesiredConfigByType("typeA");
Assert.assertEquals("v2",config.getTag());
Assert.assertNotNull(config);
Assert.assertEquals(Integer.valueOf(0),Integer.valueOf(config.getProperties().size()));
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest(clusterName,"typeA","v2",new HashMap(){
{
put("a","b");
}
}
,new HashMap>(){
{
put("final",new HashMap(){
{
put("a","true");
}
}
);
}
}
)));
try {
controller.updateClusters(Collections.singleton(cr),new HashMap());
Assert.fail("Expect failure when creating a config that exists");
}
catch ( AmbariException e) {
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testDisableAndDeleteStates() throws Exception {
Map mapRequestProps=new HashMap();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY,"in-memory");
properties.setProperty(Configuration.METADATA_DIR_PATH,"src/test/resources/stacks");
properties.setProperty(Configuration.SERVER_VERSION_FILE,"src/test/resources/version");
properties.setProperty(Configuration.OS_VERSION_KEY,"centos5");
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,"src/test/resources/");
try {
install(new ControllerModule(properties));
bind(AmbariEventPublisher.class).toInstance(EasyMock.createMock(AmbariEventPublisher.class));
}
catch ( Exception e) {
throw new RuntimeException(e);
}
}
}
);
injector.getInstance(GuiceJpaInitializer.class);
try {
AmbariManagementController amc=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Gson gson=new Gson();
clusters.addHost("host1");
clusters.addHost("host2");
clusters.addHost("host3");
Host host=clusters.getHost("host1");
setOsFamily(host,"redhat","5.9");
host.persist();
host=clusters.getHost("host2");
setOsFamily(host,"redhat","5.9");
host.persist();
host=clusters.getHost("host3");
setOsFamily(host,"redhat","5.9");
host.persist();
ClusterRequest clusterRequest=new ClusterRequest(null,"c1","HDP-1.2.0",null);
amc.createCluster(clusterRequest);
Set serviceRequests=new HashSet();
serviceRequests.add(new ServiceRequest("c1","HDFS",null));
serviceRequests.add(new ServiceRequest("c1","HIVE",null));
ServiceResourceProviderTest.createServices(amc,serviceRequests);
Type confType=new TypeToken>(){
}
.getType();
ConfigurationRequest configurationRequest=new ConfigurationRequest("c1","core-site","version1",gson.>fromJson("{ \"fs.default.name\" : \"localhost:8020\"}",confType),null);
amc.createConfiguration(configurationRequest);
configurationRequest=new ConfigurationRequest("c1","hdfs-site","version1",gson.>fromJson("{ \"dfs.datanode.data.dir.perm\" : \"750\"}",confType),null);
amc.createConfiguration(configurationRequest);
configurationRequest=new ConfigurationRequest("c1","global","version1",gson.>fromJson("{ \"hive.server2.enable.doAs\" : \"true\"}",confType),null);
amc.createConfiguration(configurationRequest);
Assert.assertTrue(clusters.getCluster("c1").getDesiredConfigs().containsKey("hive-site"));
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS",null));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
Set serviceComponentRequests=new HashSet();
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","SECONDARY_NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","DATANODE",null));
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","HDFS_CLIENT",null));
ComponentResourceProviderTest.createComponents(amc,serviceComponentRequests);
Set hostRequests=new HashSet();
hostRequests.add(new HostRequest("host1","c1",null));
hostRequests.add(new HostRequest("host2","c1",null));
hostRequests.add(new HostRequest("host3","c1",null));
HostResourceProviderTest.createHosts(amc,hostRequests);
Set componentHostRequests=new HashSet();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host1",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"SECONDARY_NAMENODE","host1",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host2",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host3",null));
amc.createHostComponents(componentHostRequests);
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS","INSTALLED"));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
Cluster cluster=clusters.getCluster("c1");
Map namenodes=cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
org.junit.Assert.assertEquals(1,namenodes.size());
ServiceComponentHost componentHost=namenodes.get("host1");
Map hostComponents=cluster.getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),"HDP-1.2.0"));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
hostComponents=cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),"HDP-1.2.0"));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
hostComponents=cluster.getService("HDFS").getServiceComponent("SECONDARY_NAMENODE").getServiceComponentHosts();
for ( Map.Entry entry : hostComponents.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),"HDP-1.2.0"));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1","DISABLED"));
updateHostComponents(amc,componentHostRequests,mapRequestProps,true);
Assert.assertEquals(State.DISABLED,componentHost.getState());
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1","INSTALLED"));
updateHostComponents(amc,componentHostRequests,mapRequestProps,true);
Assert.assertEquals(State.INSTALLED,componentHost.getState());
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1","DISABLED"));
updateHostComponents(amc,componentHostRequests,mapRequestProps,true);
Assert.assertEquals(State.DISABLED,componentHost.getState());
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host2",null));
amc.createHostComponents(componentHostRequests);
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host2","INSTALLED"));
updateHostComponents(amc,componentHostRequests,mapRequestProps,true);
namenodes=cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
Assert.assertEquals(2,namenodes.size());
componentHost=namenodes.get("host2");
componentHost.handleEvent(new ServiceComponentHostInstallEvent(componentHost.getServiceComponentName(),componentHost.getHostName(),System.currentTimeMillis(),"HDP-1.2.0"));
componentHost.handleEvent(new ServiceComponentHostOpSucceededEvent(componentHost.getServiceComponentName(),componentHost.getHostName(),System.currentTimeMillis()));
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS","STARTED"));
RequestStatusResponse response=ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
for ( ShortTaskStatus shortTaskStatus : response.getTasks()) {
assertFalse("host1".equals(shortTaskStatus.getHostName()) && "NAMENODE".equals(shortTaskStatus.getRole()));
}
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1",null));
amc.deleteHostComponents(componentHostRequests);
namenodes=cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
org.junit.Assert.assertEquals(1,namenodes.size());
testRunSmokeTestFlag(mapRequestProps,amc,serviceRequests);
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1",null));
amc.createHostComponents(componentHostRequests);
namenodes=cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
assertEquals(2,namenodes.size());
componentHost=namenodes.get("host1");
componentHost.handleEvent(new ServiceComponentHostInstallEvent(componentHost.getServiceComponentName(),componentHost.getHostName(),System.currentTimeMillis(),"HDP-1.2.0"));
componentHost.handleEvent(new ServiceComponentHostOpSucceededEvent(componentHost.getServiceComponentName(),componentHost.getHostName(),System.currentTimeMillis()));
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1","INSTALLED"));
updateHostComponents(amc,componentHostRequests,mapRequestProps,true);
assertEquals(State.INSTALLED,namenodes.get("host1").getState());
ServiceComponentHost sch=null;
for ( ServiceComponentHost tmp : cluster.getServiceComponentHosts("host2")) {
if (tmp.getServiceComponentName().equals("DATANODE")) {
tmp.setState(State.UNKNOWN);
sch=tmp;
}
}
assertNotNull(sch);
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host2","DISABLED"));
updateHostComponents(amc,componentHostRequests,mapRequestProps,false);
org.junit.Assert.assertEquals(State.DISABLED,sch.getState());
componentHostRequests.clear();
mapRequestProps.put(RequestOperationLevel.OPERATION_CLUSTER_ID,"c1");
updateHostComponents(amc,componentHostRequests,mapRequestProps,false);
org.junit.Assert.assertEquals(State.DISABLED,sch.getState());
mapRequestProps.clear();
assertEquals(sch.getServiceComponentName(),"DATANODE");
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS","INSTALLED"));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
assertEquals(State.DISABLED,sch.getState());
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS","STARTED"));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
assertEquals(State.DISABLED,sch.getState());
componentHostRequests.clear();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host2",null));
amc.deleteHostComponents(componentHostRequests);
sch=null;
for ( ServiceComponentHost tmp : cluster.getServiceComponentHosts("host2")) {
if (tmp.getServiceComponentName().equals("DATANODE")) {
sch=tmp;
}
}
org.junit.Assert.assertNull(sch);
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS","INSTALLED"));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1",null,null));
org.junit.Assert.assertEquals(2,ServiceResourceProviderTest.getServices(amc,serviceRequests).size());
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS",null));
serviceRequests.add(new ServiceRequest("c1","HIVE",null));
ServiceResourceProviderTest.deleteServices(amc,serviceRequests);
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1",null,null));
org.junit.Assert.assertEquals(0,ServiceResourceProviderTest.getServices(amc,serviceRequests).size());
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS",null));
ServiceResourceProviderTest.createServices(amc,serviceRequests);
org.junit.Assert.assertEquals(1,ServiceResourceProviderTest.getServices(amc,serviceRequests).size());
configurationRequest=new ConfigurationRequest("c1","core-site","version2",gson.>fromJson("{ \"fs.default.name\" : \"localhost:8020\"}",confType),null);
amc.createConfiguration(configurationRequest);
configurationRequest=new ConfigurationRequest("c1","hdfs-site","version2",gson.>fromJson("{ \"dfs.datanode.data.dir.perm\" : \"750\"}",confType),null);
amc.createConfiguration(configurationRequest);
configurationRequest=new ConfigurationRequest("c1","global","version2",gson.>fromJson("{ \"hbase_hdfs_root_dir\" : \"/apps/hbase/\"}",confType),null);
amc.createConfiguration(configurationRequest);
serviceRequests.clear();
serviceRequests.add(new ServiceRequest("c1","HDFS",null));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
serviceComponentRequests=new HashSet();
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","SECONDARY_NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","DATANODE",null));
serviceComponentRequests.add(new ServiceComponentRequest("c1","HDFS","HDFS_CLIENT",null));
ComponentResourceProviderTest.createComponents(amc,serviceComponentRequests);
componentHostRequests=new HashSet();
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host1",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"NAMENODE","host1",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"SECONDARY_NAMENODE","host1",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host2",null));
componentHostRequests.add(new ServiceComponentHostRequest("c1",null,"DATANODE","host3",null));
amc.createHostComponents(componentHostRequests);
namenodes=cluster.getService("HDFS").getServiceComponent("NAMENODE").getServiceComponentHosts();
org.junit.Assert.assertEquals(1,namenodes.size());
Map datanodes=cluster.getService("HDFS").getServiceComponent("DATANODE").getServiceComponentHosts();
org.junit.Assert.assertEquals(3,datanodes.size());
Map namenodes2=cluster.getService("HDFS").getServiceComponent("SECONDARY_NAMENODE").getServiceComponentHosts();
org.junit.Assert.assertEquals(1,namenodes2.size());
}
finally {
injector.getInstance(PersistService.class).stop();
}
}
APIUtilityVerifier BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigGroupOverridesWithServiceCheckActions() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
installService(clusterName,serviceName,false,false);
configs=new HashMap();
configs.put("a","c");
final Config config=new ConfigImpl("hdfs-site");
config.setProperties(configs);
config.setTag("version122");
Long groupId=createConfigGroup(clusters.getCluster(clusterName),"g1","t1",new ArrayList(){
{
add("h1");
add("h2");
}
}
,new ArrayList(){
{
add(config);
}
}
);
Assert.assertNotNull(groupId);
long requestId=startService(clusterName,serviceName,true,false);
HostRoleCommand smokeTestCmd=null;
List stages=actionDB.getAllStages(requestId);
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.HDFS_SERVICE_CHECK)) {
Assert.assertEquals(2,hrc.getExecutionCommandWrapper().getExecutionCommand().getConfigurationTags().size());
smokeTestCmd=hrc;
}
}
}
Assert.assertNotNull(smokeTestCmd);
Assert.assertEquals("c",smokeTestCmd.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("hdfs-site").get("a"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testScheduleSmokeTest() throws Exception {
final String HOST1="host1";
final String OS_TYPE="centos5";
final String STACK_ID="HDP-2.0.1";
final String CLUSTER_NAME="c1";
final String HDFS_SERVICE_CHECK_ROLE="HDFS_SERVICE_CHECK";
final String MAPREDUCE2_SERVICE_CHECK_ROLE="MAPREDUCE2_SERVICE_CHECK";
final String YARN_SERVICE_CHECK_ROLE="YARN_SERVICE_CHECK";
Map mapRequestProps=Collections.emptyMap();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY,"in-memory");
properties.setProperty(Configuration.METADATA_DIR_PATH,"src/test/resources/stacks");
properties.setProperty(Configuration.SERVER_VERSION_FILE,"../version");
properties.setProperty(Configuration.OS_VERSION_KEY,OS_TYPE);
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,"src/test/resources/");
try {
install(new ControllerModule(properties));
}
catch ( Exception e) {
throw new RuntimeException(e);
}
}
}
);
injector.getInstance(GuiceJpaInitializer.class);
try {
AmbariManagementController amc=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
clusters.addHost(HOST1);
Host host=clusters.getHost(HOST1);
setOsFamily(host,"redhat","5.9");
host.persist();
ClusterRequest clusterRequest=new ClusterRequest(null,CLUSTER_NAME,STACK_ID,null);
amc.createCluster(clusterRequest);
Set serviceRequests=new HashSet();
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"HDFS",null));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"MAPREDUCE2",null));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"YARN",null));
ServiceResourceProviderTest.createServices(amc,serviceRequests);
Set serviceComponentRequests=new HashSet();
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","SECONDARY_NAMENODE",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"HDFS","DATANODE",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"MAPREDUCE2","HISTORYSERVER",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"YARN","RESOURCEMANAGER",null));
serviceComponentRequests.add(new ServiceComponentRequest(CLUSTER_NAME,"YARN","NODEMANAGER",null));
ComponentResourceProviderTest.createComponents(amc,serviceComponentRequests);
Set hostRequests=new HashSet();
hostRequests.add(new HostRequest(HOST1,CLUSTER_NAME,null));
HostResourceProviderTest.createHosts(amc,hostRequests);
Set componentHostRequests=new HashSet();
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"DATANODE",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"NAMENODE",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"SECONDARY_NAMENODE",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"HISTORYSERVER",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"RESOURCEMANAGER",HOST1,null));
componentHostRequests.add(new ServiceComponentHostRequest(CLUSTER_NAME,null,"NODEMANAGER",HOST1,null));
amc.createHostComponents(componentHostRequests);
serviceRequests.clear();
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"HDFS",State.INSTALLED.name()));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"MAPREDUCE2",State.INSTALLED.name()));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"YARN",State.INSTALLED.name()));
ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
Cluster cluster=clusters.getCluster(CLUSTER_NAME);
for ( String serviceName : cluster.getServices().keySet()) {
for ( String componentName : cluster.getService(serviceName).getServiceComponents().keySet()) {
Map serviceComponentHosts=cluster.getService(serviceName).getServiceComponent(componentName).getServiceComponentHosts();
for ( Map.Entry entry : serviceComponentHosts.entrySet()) {
ServiceComponentHost cHost=entry.getValue();
cHost.handleEvent(new ServiceComponentHostInstallEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis(),STACK_ID));
cHost.handleEvent(new ServiceComponentHostOpSucceededEvent(cHost.getServiceComponentName(),cHost.getHostName(),System.currentTimeMillis()));
}
}
}
serviceRequests.clear();
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"HDFS",State.STARTED.name()));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"MAPREDUCE2",State.STARTED.name()));
serviceRequests.add(new ServiceRequest(CLUSTER_NAME,"YARN",State.STARTED.name()));
RequestStatusResponse response=ServiceResourceProviderTest.updateServices(amc,serviceRequests,mapRequestProps,true,false);
Collection> hdfsSmokeTasks=CollectionUtils.select(response.getTasks(),new RolePredicate(HDFS_SERVICE_CHECK_ROLE));
org.junit.Assert.assertEquals(1,hdfsSmokeTasks.size());
Collection> mapreduce2SmokeTasks=CollectionUtils.select(response.getTasks(),new RolePredicate(MAPREDUCE2_SERVICE_CHECK_ROLE));
org.junit.Assert.assertEquals(1,mapreduce2SmokeTasks.size());
Collection> yarnSmokeTasks=CollectionUtils.select(response.getTasks(),new RolePredicate(YARN_SERVICE_CHECK_ROLE));
org.junit.Assert.assertEquals(1,yarnSmokeTasks.size());
}
finally {
injector.getInstance(PersistService.class).stop();
}
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateConfigForRunningService() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host2));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host2));
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
sch.setState(State.INSTALLED);
}
}
r=new ServiceRequest(clusterName,serviceName,State.STARTED.toString());
requests.clear();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
sch.setState(State.STARTED);
}
}
Assert.assertEquals(State.STARTED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
if (sc.getName().equals("HDFS_CLIENT")) {
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
}
else {
Assert.assertEquals(State.STARTED,sc.getDesiredState());
}
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (sch.getServiceComponentName().equals("HDFS_CLIENT")) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
else {
Assert.assertEquals(State.STARTED,sch.getDesiredState());
}
}
}
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2, cr3, cr4, cr5, cr6, cr7, cr8;
cr1=new ConfigurationRequest(clusterName,"typeA","v1",configs,null);
cr2=new ConfigurationRequest(clusterName,"typeB","v1",configs,null);
cr3=new ConfigurationRequest(clusterName,"typeC","v1",configs,null);
cr4=new ConfigurationRequest(clusterName,"typeD","v1",configs,null);
cr5=new ConfigurationRequest(clusterName,"typeA","v2",configs,null);
cr6=new ConfigurationRequest(clusterName,"typeB","v2",configs,null);
cr7=new ConfigurationRequest(clusterName,"typeC","v2",configs,null);
cr8=new ConfigurationRequest(clusterName,"typeE","v1",configs,null);
controller.createConfiguration(cr1);
controller.createConfiguration(cr2);
controller.createConfiguration(cr3);
controller.createConfiguration(cr4);
controller.createConfiguration(cr5);
controller.createConfiguration(cr6);
controller.createConfiguration(cr7);
controller.createConfiguration(cr8);
Cluster cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
ServiceComponent sc1=s.getServiceComponent(componentName1);
ServiceComponent sc2=s.getServiceComponent(componentName2);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
Set schReqs=new HashSet();
Set scReqs=new HashSet();
Set sReqs=new HashSet();
Map configVersions=new HashMap();
configVersions.clear();
configVersions.put("typeA","v1");
configVersions.put("typeB","v1");
configVersions.put("typeC","v1");
schReqs.clear();
schReqs.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
Assert.assertNull(updateHostComponents(schReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("typeC","v1");
configVersions.put("typeD","v1");
scReqs.clear();
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName2,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("typeA","v2");
configVersions.put("typeC","v2");
configVersions.put("typeE","v1");
sReqs.clear();
sReqs.add(new ServiceRequest(clusterName,serviceName,null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller,sReqs,mapRequestProps,true,false));
configVersions.clear();
configVersions.put("typeA","v1");
configVersions.put("typeB","v1");
configVersions.put("typeC","v1");
schReqs.clear();
schReqs.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
Assert.assertNull(updateHostComponents(schReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("typeC","v2");
configVersions.put("typeD","v1");
scReqs.clear();
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName1,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCreateAndGetUsers() throws Exception {
createUser("user1");
Set r=controller.getUsers(Collections.singleton(new UserRequest("user1")));
Assert.assertEquals(1,r.size());
UserResponse resp=r.iterator().next();
Assert.assertEquals("user1",resp.getUsername());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testGetServiceComponentHostsWithFilters() throws AmbariException, AuthorizationException {
Cluster c1=setupClusterWithHosts("c1","HDP-0.2",new ArrayList(){
{
add("h1");
add("h2");
add("h3");
}
}
,"centos5");
Service s1=serviceFactory.createNew(c1,"HDFS");
Service s2=serviceFactory.createNew(c1,"MAPREDUCE");
Service s3=serviceFactory.createNew(c1,"HBASE");
c1.addService(s1);
c1.addService(s2);
c1.addService(s3);
s1.setDesiredState(State.INSTALLED);
s2.setDesiredState(State.INSTALLED);
s1.persist();
s2.persist();
s3.persist();
ServiceComponent sc1=serviceComponentFactory.createNew(s1,"DATANODE");
ServiceComponent sc2=serviceComponentFactory.createNew(s1,"NAMENODE");
ServiceComponent sc3=serviceComponentFactory.createNew(s3,"HBASE_REGIONSERVER");
s1.addServiceComponent(sc1);
s1.addServiceComponent(sc2);
s3.addServiceComponent(sc3);
sc1.setDesiredState(State.UNINSTALLED);
sc3.setDesiredState(State.UNINSTALLED);
sc1.persist();
sc2.persist();
sc3.persist();
ServiceComponentHost sch1=serviceComponentHostFactory.createNew(sc1,"h1");
ServiceComponentHost sch2=serviceComponentHostFactory.createNew(sc1,"h2");
ServiceComponentHost sch3=serviceComponentHostFactory.createNew(sc1,"h3");
ServiceComponentHost sch4=serviceComponentHostFactory.createNew(sc2,"h1");
ServiceComponentHost sch5=serviceComponentHostFactory.createNew(sc2,"h2");
ServiceComponentHost sch6=serviceComponentHostFactory.createNew(sc3,"h3");
sc1.addServiceComponentHost(sch1);
sc1.addServiceComponentHost(sch2);
sc1.addServiceComponentHost(sch3);
sc2.addServiceComponentHost(sch4);
sc2.addServiceComponentHost(sch5);
sc3.addServiceComponentHost(sch6);
sch1.setDesiredState(State.INSTALLED);
sch2.setDesiredState(State.INIT);
sch4.setDesiredState(State.INSTALLED);
sch5.setDesiredState(State.UNINSTALLED);
sch1.persist();
sch2.persist();
sch3.persist();
sch4.persist();
sch5.persist();
sch6.persist();
ServiceComponentHostRequest r=new ServiceComponentHostRequest(null,null,null,null,null);
try {
controller.getHostComponents(Collections.singleton(r));
fail("Expected failure for invalid cluster");
}
catch ( Exception e) {
}
r=new ServiceComponentHostRequest(c1.getClusterName(),null,null,null,null);
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(6,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),s1.getName(),null,null,null);
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(5,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),null,sc3.getName(),null,null);
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),null,null,"h2",null);
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),null,null,null,State.UNINSTALLED.toString());
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),s1.getName(),null,null,State.INIT.toString());
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),null,sc3.getName(),null,State.INSTALLED.toString());
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(0,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),null,null,"h2",State.INIT.toString());
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),s3.getName(),null,"h1",null);
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(0,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),s3.getName(),sc3.getName(),"h3",State.INSTALLED.toString());
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(0,resps.size());
r=new ServiceComponentHostRequest(c1.getClusterName(),s3.getName(),sc3.getName(),"h3",null);
resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
ServiceComponentHostRequest r1, r2, r3;
r1=new ServiceComponentHostRequest(c1.getClusterName(),null,null,"h3",null);
r2=new ServiceComponentHostRequest(c1.getClusterName(),s3.getName(),sc3.getName(),"h2",null);
r3=new ServiceComponentHostRequest(c1.getClusterName(),null,null,"h2",null);
Set reqs=new HashSet();
reqs.addAll(Arrays.asList(r1,r2,r3));
resps=controller.getHostComponents(reqs);
Assert.assertEquals(4,resps.size());
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testCreateServiceComponentHostWithInvalidRequest() throws AmbariException, AuthorizationException {
Set set1=new HashSet();
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest(null,null,null,null,null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid requests");
}
catch ( IllegalArgumentException e) {
}
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo",null,null,null,null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid requests");
}
catch ( IllegalArgumentException e) {
}
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS",null,null,null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid requests");
}
catch ( IllegalArgumentException e) {
}
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE",null,null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid requests");
}
catch ( IllegalArgumentException e) {
}
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid cluster");
}
catch ( ParentObjectNotFoundException e) {
}
clusters.addCluster("foo",new StackId("HDP-0.2"));
clusters.addCluster("c1",new StackId("HDP-0.2"));
clusters.addCluster("c2",new StackId("HDP-0.2"));
Cluster foo=clusters.getCluster("foo");
Cluster c1=clusters.getCluster("c1");
Cluster c2=clusters.getCluster("c2");
StackId stackId=new StackId("HDP-0.2");
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
foo.setDesiredStackVersion(stackId);
foo.setCurrentStackVersion(stackId);
foo.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
foo.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
stackId=new StackId("HDP-0.2");
c1.setDesiredStackVersion(stackId);
c1.setCurrentStackVersion(stackId);
c1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
c1.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
stackId=new StackId("HDP-0.2");
c2.setDesiredStackVersion(stackId);
c2.setCurrentStackVersion(stackId);
c2.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
c2.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid service");
}
catch ( IllegalArgumentException e) {
}
Service s1=serviceFactory.createNew(foo,"HDFS");
foo.addService(s1);
s1.persist();
Service s2=serviceFactory.createNew(c1,"HDFS");
c1.addService(s2);
s2.persist();
Service s3=serviceFactory.createNew(c2,"HDFS");
c2.addService(s3);
s3.persist();
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid service");
}
catch ( AmbariException e) {
}
ServiceComponent sc1=serviceComponentFactory.createNew(s1,"NAMENODE");
s1.addServiceComponent(sc1);
sc1.persist();
ServiceComponent sc2=serviceComponentFactory.createNew(s2,"NAMENODE");
s2.addServiceComponent(sc2);
sc2.persist();
ServiceComponent sc3=serviceComponentFactory.createNew(s3,"NAMENODE");
s3.addServiceComponent(sc3);
sc3.persist();
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid host");
}
catch ( AmbariException e) {
}
clusters.addHost("h1");
Host h1=clusters.getHost("h1");
h1.setIPv4("ipv41");
h1.setIPv6("ipv61");
setOsFamily(h1,"redhat","6.3");
h1.persist();
clusters.addHost("h2");
Host h2=clusters.getHost("h2");
h2.setIPv4("ipv42");
h2.setIPv6("ipv62");
setOsFamily(h2,"redhat","6.3");
h2.persist();
clusters.addHost("h3");
Host h3=clusters.getHost("h3");
h3.setIPv4("ipv43");
h3.setIPv6("ipv63");
setOsFamily(h3,"redhat","6.3");
h3.persist();
try {
set1.clear();
ServiceComponentHostRequest rInvalid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
set1.add(rInvalid);
controller.createHostComponents(set1);
fail("Expected failure for invalid host cluster mapping");
}
catch ( AmbariException e) {
}
Set hostnames=new HashSet();
hostnames.add("h1");
hostnames.add("h2");
hostnames.add("h3");
clusters.mapHostsToCluster(hostnames,"foo");
clusters.mapHostsToCluster(hostnames,"c1");
clusters.mapHostsToCluster(hostnames,"c2");
set1.clear();
ServiceComponentHostRequest valid=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
set1.add(valid);
controller.createHostComponents(set1);
try {
set1.clear();
ServiceComponentHostRequest rInvalid1=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h2",null);
ServiceComponentHostRequest rInvalid2=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h2",null);
set1.add(rInvalid1);
set1.add(rInvalid2);
controller.createHostComponents(set1);
fail("Expected failure for dup requests");
}
catch ( DuplicateResourceException e) {
}
try {
set1.clear();
ServiceComponentHostRequest rInvalid1=new ServiceComponentHostRequest("c1","HDFS","NAMENODE","h2",null);
ServiceComponentHostRequest rInvalid2=new ServiceComponentHostRequest("c2","HDFS","NAMENODE","h3",null);
set1.add(rInvalid1);
set1.add(rInvalid2);
controller.createHostComponents(set1);
fail("Expected failure for multiple clusters");
}
catch ( IllegalArgumentException e) {
}
try {
set1.clear();
ServiceComponentHostRequest rInvalid1=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h1",null);
ServiceComponentHostRequest rInvalid2=new ServiceComponentHostRequest("foo","HDFS","NAMENODE","h2",null);
set1.add(rInvalid1);
set1.add(rInvalid2);
controller.createHostComponents(set1);
fail("Expected failure for already existing");
}
catch ( DuplicateResourceException e) {
}
Assert.assertEquals(1,foo.getServiceComponentHosts("h1").size());
Assert.assertEquals(0,foo.getServiceComponentHosts("h2").size());
Assert.assertEquals(0,foo.getServiceComponentHosts("h3").size());
set1.clear();
ServiceComponentHostRequest valid1=new ServiceComponentHostRequest("c1","HDFS","NAMENODE","h1",null);
set1.add(valid1);
controller.createHostComponents(set1);
set1.clear();
ServiceComponentHostRequest valid2=new ServiceComponentHostRequest("c2","HDFS","NAMENODE","h1",null);
set1.add(valid2);
controller.createHostComponents(set1);
Assert.assertEquals(1,foo.getServiceComponentHosts("h1").size());
Assert.assertEquals(1,c1.getServiceComponentHosts("h1").size());
Assert.assertEquals(1,c2.getServiceComponentHosts("h1").size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
/**
* Ensure that ServiceNotFoundException is handled where there are multiple requests as would be the
* case when an OR predicate is provided in the query.
*/
@Test public void testGetServices___OR_Predicate_ServiceNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=new Capture();
Clusters clusters=createNiceMock(Clusters.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service1=createNiceMock(Service.class);
Service service2=createNiceMock(Service.class);
ServiceResponse response=createNiceMock(ServiceResponse.class);
ServiceResponse response2=createNiceMock(ServiceResponse.class);
ServiceRequest request1=new ServiceRequest("cluster1","service1",null);
ServiceRequest request2=new ServiceRequest("cluster1","service2",null);
ServiceRequest request3=new ServiceRequest("cluster1","service3",null);
ServiceRequest request4=new ServiceRequest("cluster1","service4",null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
setRequests.add(request4);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createStrictMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(4);
expect(cluster.getService("service1")).andReturn(service1);
expect(cluster.getService("service2")).andThrow(new ServiceNotFoundException("cluster1","service2"));
expect(cluster.getService("service3")).andThrow(new ServiceNotFoundException("cluster1","service3"));
expect(cluster.getService("service4")).andReturn(service2);
expect(service1.convertToResponse()).andReturn(response);
expect(service2.convertToResponse()).andReturn(response2);
replay(maintHelper,injector,clusters,cluster,service1,service2,response,response2);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
Set setResponses=ServiceResourceProviderTest.getServices(controller,setRequests);
assertSame(controller,controllerCapture.getValue());
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response));
assertTrue(setResponses.contains(response2));
verify(injector,clusters,cluster,service1,service2,response,response2);
}
APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testInstallAndStartService() throws Exception {
testCreateServiceComponentHostSimple();
String clusterName="foo1";
String serviceName="HDFS";
Cluster cluster=clusters.getCluster(clusterName);
Service s1=cluster.getService(serviceName);
Map configs=new HashMap();
Map properties=new HashMap();
Map> propertiesAttributes=new HashMap>();
properties.put("a","a1");
properties.put("b","b1");
Config c1=new ConfigImpl(cluster,"hdfs-site",properties,propertiesAttributes,injector);
properties.put("c","c1");
properties.put("d","d1");
Config c2=new ConfigImpl(cluster,"core-site",properties,propertiesAttributes,injector);
Config c3=new ConfigImpl(cluster,"foo-site",properties,propertiesAttributes,injector);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
c1.setTag("v1");
c2.setTag("v1");
c3.setTag("v1");
cluster.addConfig(c1);
cluster.addConfig(c2);
cluster.addConfig(c3);
c1.persist();
c2.persist();
c3.persist();
configs.put(c1.getType(),c1);
configs.put(c2.getType(),c2);
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
RequestStatusResponse trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
Assert.assertEquals(State.INIT,sch.getState());
}
}
List taskStatuses=trackAction.getTasks();
Assert.assertEquals(5,taskStatuses.size());
boolean foundH1NN=false;
boolean foundH1DN=false;
boolean foundH2DN=false;
boolean foundH1CLT=false;
boolean foundH2CLT=false;
for ( ShortTaskStatus taskStatus : taskStatuses) {
LOG.debug("Task dump :" + taskStatus.toString());
Assert.assertEquals(RoleCommand.INSTALL.toString(),taskStatus.getCommand());
Assert.assertEquals(HostRoleStatus.PENDING.toString(),taskStatus.getStatus());
if (taskStatus.getHostName().equals("h1")) {
if (Role.NAMENODE.toString().equals(taskStatus.getRole())) {
foundH1NN=true;
}
else if (Role.DATANODE.toString().equals(taskStatus.getRole())) {
foundH1DN=true;
}
else if (Role.HDFS_CLIENT.toString().equals(taskStatus.getRole())) {
foundH1CLT=true;
}
else {
fail("Found invalid role for host h1");
}
}
else if (taskStatus.getHostName().equals("h2")) {
if (Role.DATANODE.toString().equals(taskStatus.getRole())) {
foundH2DN=true;
}
else if (Role.HDFS_CLIENT.toString().equals(taskStatus.getRole())) {
foundH2CLT=true;
}
else {
fail("Found invalid role for host h2");
}
}
else {
fail("Found invalid host in task list");
}
}
Assert.assertTrue(foundH1DN && foundH1NN && foundH2DN&& foundH1CLT&& foundH2CLT);
List stages=actionDB.getAllStages(trackAction.getRequestId());
Assert.assertEquals(1,stages.size());
for ( Stage stage : stages) {
LOG.info("Stage Details for Install Service" + ", stageId=" + stage.getStageId() + ", actionId="+ stage.getActionId());
for ( String host : stage.getHosts()) {
for ( ExecutionCommandWrapper ecw : stage.getExecutionCommands(host)) {
Assert.assertFalse(ecw.getExecutionCommand().getHostLevelParams().get("repo_info").isEmpty());
}
}
}
org.apache.ambari.server.controller.spi.Request request=PropertyHelper.getReadRequest(TaskResourceProvider.TASK_CLUSTER_NAME_PROPERTY_ID,TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID,TaskResourceProvider.TASK_STAGE_ID_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(trackAction.getRequestId()).toPredicate();
List entities=hostRoleCommandDAO.findAll(request,predicate);
Assert.assertEquals(5,entities.size());
predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals(trackAction.getRequestId()).and().property(TaskResourceProvider.TASK_ID_PROPERTY_ID).equals(1L).toPredicate();
entities=hostRoleCommandDAO.findAll(request,predicate);
Assert.assertEquals(1,entities.size());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
sch.setState(State.INSTALLED);
}
}
r=new ServiceRequest(clusterName,serviceName,State.STARTED.toString());
requests.clear();
requests.add(r);
trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.STARTED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
if (sc.getName().equals("HDFS_CLIENT")) {
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
}
else {
Assert.assertEquals(State.STARTED,sc.getDesiredState());
}
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (sch.getServiceComponentName().equals("HDFS_CLIENT")) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
else {
Assert.assertEquals(State.STARTED,sch.getDesiredState());
}
}
}
stages=actionDB.getAllStages(trackAction.getRequestId());
Assert.assertEquals(2,stages.size());
StringBuilder sb=new StringBuilder();
clusters.debugDump(sb);
LOG.info("Cluster Dump: " + sb.toString());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
if (sc.isClientComponent()) {
sch.setState(State.INSTALLED);
}
else {
sch.setState(State.INSTALL_FAILED);
}
}
}
r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
requests.clear();
requests.add(r);
trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponent sc : clusters.getCluster(clusterName).getService(serviceName).getServiceComponents().values()) {
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
}
stages=actionDB.getAllStages(trackAction.getRequestId());
Assert.assertEquals(1,stages.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetStackVersionActiveAttr() throws Exception {
for ( StackInfo stackInfo : ambariMetaInfo.getStacks(STACK_NAME)) {
if (stackInfo.getVersion().equalsIgnoreCase(STACK_VERSION)) {
stackInfo.setActive(true);
}
}
StackVersionRequest requestWithParams=new StackVersionRequest(STACK_NAME,STACK_VERSION);
Set responsesWithParams=controller.getStackVersions(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackVersionResponse responseWithParams : responsesWithParams) {
Assert.assertTrue(responseWithParams.isActive());
}
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceComponentSimple() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName="NAMENODE";
try {
createServiceComponent(clusterName,serviceName,componentName,State.INSTALLING);
fail("ServiceComponent creation should fail for invalid state");
}
catch ( Exception e) {
}
try {
clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName);
fail("ServiceComponent creation should have failed");
}
catch ( Exception e) {
}
createServiceComponent(clusterName,serviceName,componentName,State.INIT);
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName));
ServiceComponentRequest r=new ServiceComponentRequest(clusterName,serviceName,null,null);
Set response=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(1,response.size());
ServiceComponentResponse sc=response.iterator().next();
Assert.assertEquals(State.INIT.toString(),sc.getDesiredState());
Assert.assertEquals(componentName,sc.getComponentName());
Assert.assertEquals(clusterName,sc.getClusterName());
Assert.assertEquals(serviceName,sc.getServiceName());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceComponentUpdateRecursive() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
String serviceName1="HDFS";
createService(clusterName,serviceName1,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName1,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Set set1=new HashSet();
ServiceComponentHostRequest r1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INIT.toString());
ServiceComponentHostRequest r2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host1,State.INIT.toString());
ServiceComponentHostRequest r3=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INIT.toString());
ServiceComponentHostRequest r4=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host2,State.INIT.toString());
ServiceComponentHostRequest r5=new ServiceComponentHostRequest(clusterName,serviceName1,componentName3,host1,State.INIT.toString());
set1.add(r1);
set1.add(r2);
set1.add(r3);
set1.add(r4);
set1.add(r5);
controller.createHostComponents(set1);
Cluster c1=clusters.getCluster(clusterName);
Service s1=c1.getService(serviceName1);
ServiceComponent sc1=s1.getServiceComponent(componentName1);
ServiceComponent sc2=s1.getServiceComponent(componentName2);
ServiceComponent sc3=s1.getServiceComponent(componentName3);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
ServiceComponentHost sch2=sc2.getServiceComponentHost(host1);
ServiceComponentHost sch3=sc1.getServiceComponentHost(host2);
ServiceComponentHost sch4=sc2.getServiceComponentHost(host2);
ServiceComponentHost sch5=sc3.getServiceComponentHost(host1);
s1.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.INIT);
sc2.setDesiredState(State.INIT);
sc3.setDesiredState(State.STARTED);
sch1.setDesiredState(State.INSTALLED);
sch2.setDesiredState(State.INSTALLED);
sch3.setDesiredState(State.STARTED);
sch4.setDesiredState(State.INSTALLED);
sch5.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLED);
sch2.setState(State.INSTALLED);
sch3.setState(State.STARTED);
sch4.setState(State.INSTALLED);
sch5.setState(State.UNKNOWN);
Set reqs=new HashSet();
ServiceComponentRequest req1, req2, req3;
req1=new ServiceComponentRequest(clusterName,serviceName1,sc3.getName(),State.INSTALLED.toString());
reqs.add(req1);
ComponentResourceProviderTest.updateComponents(controller,reqs,Collections.emptyMap(),true);
try {
reqs.clear();
req1=new ServiceComponentRequest(clusterName,serviceName1,sc1.getName(),State.INIT.toString());
reqs.add(req1);
ComponentResourceProviderTest.updateComponents(controller,reqs,Collections.emptyMap(),true);
fail("Expected failure for invalid state update");
}
catch ( Exception e) {
}
s1.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.STARTED);
sc2.setDesiredState(State.INSTALLED);
sc3.setDesiredState(State.STARTED);
sch1.setDesiredState(State.INIT);
sch2.setDesiredState(State.INIT);
sch3.setDesiredState(State.INIT);
sch4.setDesiredState(State.INIT);
sch5.setDesiredState(State.INIT);
sch1.setState(State.INIT);
sch2.setState(State.INSTALLED);
sch3.setState(State.INIT);
sch4.setState(State.INSTALLED);
sch5.setState(State.INSTALLED);
try {
reqs.clear();
req1=new ServiceComponentRequest(clusterName,serviceName1,sc1.getName(),State.STARTED.toString());
reqs.add(req1);
ComponentResourceProviderTest.updateComponents(controller,reqs,Collections.emptyMap(),true);
fail("Expected failure for invalid state update");
}
catch ( Exception e) {
}
s1.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.STARTED);
sc2.setDesiredState(State.INIT);
sc3.setDesiredState(State.STARTED);
sch1.setDesiredState(State.INIT);
sch2.setDesiredState(State.INIT);
sch3.setDesiredState(State.INIT);
sch4.setDesiredState(State.INIT);
sch5.setDesiredState(State.INIT);
sch1.setState(State.STARTED);
sch2.setState(State.INIT);
sch3.setState(State.INSTALLED);
sch4.setState(State.STARTED);
sch5.setState(State.INIT);
reqs.clear();
req1=new ServiceComponentRequest(clusterName,serviceName1,sc1.getName(),State.INSTALLED.toString());
req2=new ServiceComponentRequest(clusterName,serviceName1,sc2.getName(),State.INSTALLED.toString());
req3=new ServiceComponentRequest(clusterName,serviceName1,sc3.getName(),State.INSTALLED.toString());
reqs.add(req1);
reqs.add(req2);
reqs.add(req3);
RequestStatusResponse trackAction=ComponentResourceProviderTest.updateComponents(controller,reqs,Collections.emptyMap(),true);
Assert.assertEquals(State.INSTALLED,s1.getDesiredState());
Assert.assertEquals(State.INSTALLED,sc1.getDesiredState());
Assert.assertEquals(State.INSTALLED,sc2.getDesiredState());
Assert.assertEquals(State.INSTALLED,sc3.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch1.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch2.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch3.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch4.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch5.getDesiredState());
Assert.assertEquals(State.STARTED,sch1.getState());
Assert.assertEquals(State.INIT,sch2.getState());
Assert.assertEquals(State.INSTALLED,sch3.getState());
Assert.assertEquals(State.STARTED,sch4.getState());
Assert.assertEquals(State.INIT,sch5.getState());
long requestId=trackAction.getRequestId();
List stages=actionDB.getAllStages(requestId);
Assert.assertTrue(!stages.isEmpty());
for ( Stage stage : stages) {
LOG.debug("Stage dump: " + stage.toString());
}
sch1.setState(State.INSTALLED);
sch2.setState(State.INSTALLED);
sch3.setState(State.INSTALLED);
sch4.setState(State.INSTALLED);
sch5.setState(State.INSTALLED);
reqs.clear();
req1=new ServiceComponentRequest(clusterName,serviceName1,sc1.getName(),State.INSTALLED.toString());
req2=new ServiceComponentRequest(clusterName,serviceName1,sc2.getName(),State.INSTALLED.toString());
reqs.add(req1);
reqs.add(req2);
trackAction=ComponentResourceProviderTest.updateComponents(controller,reqs,Collections.emptyMap(),true);
Assert.assertNull(trackAction);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHbaseDecommission() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-2.0.7"));
String serviceName="HBASE";
createService(clusterName,serviceName,null);
String componentName1="HBASE_MASTER";
String componentName2="HBASE_REGIONSERVER";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName1,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
RequestOperationLevel level=new RequestOperationLevel(Resource.Type.HostComponent,clusterName,null,null,null);
installService(clusterName,serviceName,false,false);
startService(clusterName,serviceName,false,false);
Cluster cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
Assert.assertEquals(State.STARTED,s.getDesiredState());
ServiceComponentHost scHost=s.getServiceComponent("HBASE_REGIONSERVER").getServiceComponentHost("h2");
Assert.assertEquals(HostComponentAdminState.INSERVICE,scHost.getComponentAdminState());
Map params=new HashMap(){
{
put("excluded_hosts","h2");
put("align_maintenance_state","true");
}
}
;
RequestResourceFilter resourceFilter=new RequestResourceFilter("HBASE","HBASE_MASTER",null);
List resourceFilters=new ArrayList();
resourceFilters.add(resourceFilter);
ExecuteActionRequest request=new ExecuteActionRequest(clusterName,"DECOMMISSION",null,resourceFilters,level,params,false);
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
RequestStatusResponse response=controller.createAction(request,requestProperties);
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
ExecutionCommand execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertNotNull(storedTasks);
Assert.assertEquals(1,storedTasks.size());
Assert.assertEquals(HostComponentAdminState.DECOMMISSIONED,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.ON,scHost.getMaintenanceState());
HostRoleCommand command=storedTasks.get(0);
Assert.assertTrue("DECOMMISSION, Excluded: h2".equals(command.getCommandDetail()));
Assert.assertTrue("DECOMMISSION".equals(command.getCustomCommandName()));
Map cmdParams=command.getExecutionCommandWrapper().getExecutionCommand().getCommandParams();
Assert.assertTrue(cmdParams.containsKey("mark_draining_only"));
Assert.assertEquals("false",cmdParams.get("mark_draining_only"));
Assert.assertEquals(Role.HBASE_MASTER,command.getRole());
Assert.assertEquals(RoleCommand.CUSTOM_COMMAND,command.getRoleCommand());
Assert.assertEquals("DECOMMISSION",execCmd.getHostLevelParams().get("custom_command"));
assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
s.getServiceComponent("HBASE_REGIONSERVER").getServiceComponentHost("h2").setState(State.INSTALLED);
params=new HashMap(){
{
put("excluded_hosts","h2");
put("mark_draining_only","true");
put("slave_type","HBASE_REGIONSERVER");
put("align_maintenance_state","true");
}
}
;
resourceFilter=new RequestResourceFilter("HBASE","HBASE_MASTER",null);
ArrayList filters=new ArrayList();
filters.add(resourceFilter);
request=new ExecuteActionRequest(clusterName,"DECOMMISSION",null,filters,level,params,false);
response=controller.createAction(request,requestProperties);
storedTasks=actionDB.getRequestTasks(response.getRequestId());
execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertNotNull(storedTasks);
Assert.assertEquals(1,storedTasks.size());
Assert.assertEquals(HostComponentAdminState.DECOMMISSIONED,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.ON,scHost.getMaintenanceState());
command=storedTasks.get(0);
Assert.assertEquals("DECOMMISSION",execCmd.getHostLevelParams().get("custom_command"));
Assert.assertTrue("DECOMMISSION, Excluded: h2".equals(command.getCommandDetail()));
Assert.assertTrue("DECOMMISSION".equals(command.getCustomCommandName()));
cmdParams=command.getExecutionCommandWrapper().getExecutionCommand().getCommandParams();
Assert.assertTrue(cmdParams.containsKey("mark_draining_only"));
Assert.assertEquals("true",cmdParams.get("mark_draining_only"));
assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
params=new HashMap(){
{
put("included_hosts","h2");
}
}
;
request=new ExecuteActionRequest(clusterName,"DECOMMISSION",null,resourceFilters,level,params,false);
response=controller.createAction(request,requestProperties);
storedTasks=actionDB.getRequestTasks(response.getRequestId());
execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertNotNull(storedTasks);
Assert.assertEquals(1,storedTasks.size());
Assert.assertEquals(HostComponentAdminState.INSERVICE,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.ON,scHost.getMaintenanceState());
command=storedTasks.get(0);
Assert.assertTrue("DECOMMISSION, Included: h2".equals(command.getCommandDetail()));
Assert.assertTrue("DECOMMISSION".equals(command.getCustomCommandName()));
cmdParams=command.getExecutionCommandWrapper().getExecutionCommand().getCommandParams();
Assert.assertTrue(cmdParams.containsKey("mark_draining_only"));
Assert.assertEquals("false",cmdParams.get("mark_draining_only"));
assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
Assert.assertTrue(cmdParams.containsKey("excluded_hosts"));
Assert.assertEquals("",cmdParams.get("excluded_hosts"));
Assert.assertEquals(Role.HBASE_MASTER,command.getRole());
Assert.assertEquals(RoleCommand.CUSTOM_COMMAND,command.getRoleCommand());
Assert.assertEquals("DECOMMISSION",execCmd.getHostLevelParams().get("custom_command"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetClusters() throws AmbariException, AuthorizationException {
clusters.addCluster("c1",new StackId("HDP-0.1"));
Cluster c1=clusters.getCluster("c1");
StackId stackId=new StackId("HDP-0.1");
c1.setDesiredStackVersion(stackId);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
ClusterRequest r=new ClusterRequest(null,null,null,null);
Set resp=controller.getClusters(Collections.singleton(r));
Assert.assertEquals(1,resp.size());
ClusterResponse resp1=resp.iterator().next();
Assert.assertEquals(c1.getClusterId(),resp1.getClusterId().longValue());
Assert.assertEquals(c1.getClusterName(),resp1.getClusterName());
Assert.assertEquals(c1.getDesiredStackVersion().getStackId(),resp1.getDesiredStackVersion());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testResourceFiltersWithCustomActions() throws AmbariException, AuthorizationException {
setupClusterWithHosts("c1","HDP-2.0.6",new ArrayList(){
{
add("h1");
add("h2");
add("h3");
}
}
,"centos6");
Cluster cluster=clusters.getCluster("c1");
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.6"));
ConfigFactory cf=injector.getInstance(ConfigFactory.class);
Config config1=cf.createNew(cluster,"global",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=cf.createNew(cluster,"core-site",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config2.setTag("version1");
cluster.addConfig(config1);
cluster.addConfig(config2);
Service hdfs=cluster.addService("HDFS");
hdfs.persist();
Service mapred=cluster.addService("YARN");
mapred.persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
mapred.addServiceComponent(Role.RESOURCEMANAGER.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h2").persist();
controller.getAmbariMetaInfo().addActionDefinition(new ActionDefinition("a1",ActionType.SYSTEM,"","HDFS","","Some custom action.",TargetHostType.ALL,Short.valueOf("10010")));
Map params=new HashMap(){
{
put("test","test");
}
}
;
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
List resourceFilters=new ArrayList();
ArrayList hosts=new ArrayList(){
{
add("h2");
}
}
;
RequestResourceFilter resourceFilter1=new RequestResourceFilter("HDFS","DATANODE",hosts);
hosts=new ArrayList(){
{
add("h1");
}
}
;
RequestResourceFilter resourceFilter2=new RequestResourceFilter("HDFS","NAMENODE",hosts);
resourceFilters.add(resourceFilter1);
resourceFilters.add(resourceFilter2);
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1",null,"a1",resourceFilters,null,params,false);
RequestStatusResponse response=null;
try {
response=controller.createAction(actionRequest,requestProperties);
}
catch ( AmbariException ae) {
LOG.info("Expected exception.",ae);
Assert.assertTrue(ae.getMessage().contains("Custom action definition only " + "allows one resource filter to be specified"));
}
resourceFilters.remove(resourceFilter1);
actionRequest=new ExecuteActionRequest("c1",null,"a1",resourceFilters,null,params,false);
response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
HostRoleCommand nnCommand=null;
for ( HostRoleCommand hrc : actionDB.getRequestTasks(response.getRequestId())) {
if (hrc.getHostName().equals("h1")) {
nnCommand=hrc;
}
}
Assert.assertNotNull(nnCommand);
ExecutionCommand cmd=nnCommand.getExecutionCommandWrapper().getExecutionCommand();
Assert.assertEquals("a1",cmd.getRole());
Assert.assertEquals("10010",cmd.getCommandParams().get("command_timeout"));
Type type=new TypeToken>(){
}
.getType();
for ( Stage stage : actionDB.getAllStages(response.getRequestId())) {
Map commandParamsStage=StageUtils.getGson().fromJson(stage.getCommandParamsStage(),type);
Assert.assertTrue(commandParamsStage.containsKey("test"));
}
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
InternalCallVerifier NullVerifier
@Test public void testReInstallForInstallFailedClient() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
String host3="h3";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
addHostToCluster(host3,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host3,null);
installService(clusterName,serviceName,false,false);
Cluster cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
ServiceComponent sc3=s.getServiceComponent(componentName3);
for ( ServiceComponentHost sch : sc3.getServiceComponentHosts().values()) {
if (sch.getHostName().equals(host3)) {
sch.setState(State.INSTALL_FAILED);
}
}
long requestId=startService(clusterName,serviceName,false,true);
List stages=actionDB.getAllStages(requestId);
HostRoleCommand clientReinstallCmd=null;
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getHostName().equals(host3) && hrc.getRole().toString().equals("HDFS_CLIENT")) {
clientReinstallCmd=hrc;
break;
}
}
}
Assert.assertNotNull(clientReinstallCmd);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetStackServices() throws Exception {
StackServiceRequest request=new StackServiceRequest(STACK_NAME,NEW_STACK_VERSION,null);
Set responses=controller.getStackServices(Collections.singleton(request));
Assert.assertEquals(11,responses.size());
StackServiceRequest requestWithParams=new StackServiceRequest(STACK_NAME,NEW_STACK_VERSION,SERVICE_NAME);
Set responsesWithParams=controller.getStackServices(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackServiceResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getServiceName(),SERVICE_NAME);
Assert.assertTrue(responseWithParams.getConfigTypes().size() > 0);
}
StackServiceRequest invalidRequest=new StackServiceRequest(STACK_NAME,NEW_STACK_VERSION,NON_EXT_VALUE);
try {
controller.getStackServices(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetServices() throws AmbariException {
clusters.addCluster("c1",new StackId("HDP-0.1"));
Cluster c1=clusters.getCluster("c1");
Service s1=serviceFactory.createNew(c1,"HDFS");
c1.addService(s1);
s1.setDesiredStackVersion(new StackId("HDP-0.1"));
s1.setDesiredState(State.INSTALLED);
s1.persist();
ServiceRequest r=new ServiceRequest("c1",null,null);
Set resp=ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
ServiceResponse resp1=resp.iterator().next();
Assert.assertEquals(s1.getClusterId(),resp1.getClusterId().longValue());
Assert.assertEquals(s1.getCluster().getClusterName(),resp1.getClusterName());
Assert.assertEquals(s1.getName(),resp1.getServiceName());
Assert.assertEquals("HDP-0.1",s1.getDesiredStackVersion().getStackId());
Assert.assertEquals(s1.getDesiredStackVersion().getStackId(),resp1.getDesiredStackVersion());
Assert.assertEquals(State.INSTALLED.toString(),resp1.getDesiredState());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigGroupOverridesWithHostActions() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
String serviceName1="HDFS";
String serviceName2="MAPREDUCE2";
createService(clusterName,serviceName1,null);
createService(clusterName,serviceName2,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
String componentName4="HISTORYSERVER";
createServiceComponent(clusterName,serviceName1,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName3,State.INIT);
createServiceComponent(clusterName,serviceName2,componentName4,State.INIT);
String host1="h1";
String host2="h2";
String host3="h3";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
addHostToCluster(host3,clusterName);
createServiceComponentHost(clusterName,serviceName1,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName1,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName1,componentName3,host2,null);
createServiceComponentHost(clusterName,serviceName1,componentName3,host3,null);
createServiceComponentHost(clusterName,serviceName2,componentName4,host3,null);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1, cr2, cr3;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
cr3=new ConfigurationRequest(clusterName,"mapred-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr3));
controller.updateClusters(Collections.singleton(crReq),null);
configs=new HashMap();
configs.put("a","c");
cluster=clusters.getCluster(clusterName);
final Config config=new ConfigImpl("core-site");
config.setProperties(configs);
config.setTag("version122");
Long groupId=createConfigGroup(cluster,"g1","t1",new ArrayList(){
{
add("h1");
}
}
,new ArrayList(){
{
add(config);
}
}
);
Assert.assertNotNull(groupId);
configs=new HashMap();
configs.put("a","c");
final Config config2=new ConfigImpl("mapred-site");
config2.setProperties(configs);
config2.setTag("version122");
groupId=createConfigGroup(cluster,"g2","t2",new ArrayList(){
{
add("h1");
}
}
,new ArrayList(){
{
add(config2);
}
}
);
Assert.assertNotNull(groupId);
Long requestId=installService(clusterName,serviceName1,false,false);
HostRoleCommand namenodeInstall=null;
HostRoleCommand clientInstall=null;
HostRoleCommand slaveInstall=null;
for ( Stage stage : actionDB.getAllStages(requestId)) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.NAMENODE) && hrc.getHostName().equals("h1")) {
namenodeInstall=hrc;
}
else if (hrc.getRole().equals(Role.HDFS_CLIENT) && hrc.getHostName().equals("h3")) {
clientInstall=hrc;
}
else if (hrc.getRole().equals(Role.DATANODE) && hrc.getHostName().equals("h2")) {
slaveInstall=hrc;
}
}
}
Assert.assertNotNull(namenodeInstall);
Assert.assertNotNull(clientInstall);
Assert.assertNotNull(slaveInstall);
Assert.assertTrue(namenodeInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("core-site").containsKey("a"));
Assert.assertEquals("c",namenodeInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("core-site").get("a"));
Assert.assertTrue(clientInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("core-site").containsKey("a"));
Assert.assertEquals("b",clientInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("core-site").get("a"));
Assert.assertTrue(slaveInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("core-site").containsKey("a"));
Assert.assertEquals("b",slaveInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("core-site").get("a"));
startService(clusterName,serviceName1,false,false);
requestId=installService(clusterName,serviceName2,false,false);
HostRoleCommand mapredInstall=null;
for ( Stage stage : actionDB.getAllStages(requestId)) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.HISTORYSERVER) && hrc.getHostName().equals("h3")) {
mapredInstall=hrc;
}
}
}
Assert.assertNotNull(mapredInstall);
Assert.assertEquals("b",mapredInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("mapred-site").get("a"));
ConfigGroup configGroup=cluster.getConfigGroups().get(groupId);
configGroup.setHosts(new HashMap(){
{
put(3L,clusters.getHost("h3"));
}
}
);
configGroup.persist();
requestId=startService(clusterName,serviceName2,false,false);
mapredInstall=null;
for ( Stage stage : actionDB.getAllStages(requestId)) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.HISTORYSERVER) && hrc.getHostName().equals("h3")) {
mapredInstall=hrc;
}
}
}
Assert.assertNotNull(mapredInstall);
Assert.assertEquals("c",mapredInstall.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().get("mapred-site").get("a"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRepositories() throws Exception {
RepositoryRequest request=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,null);
Set responses=controller.getRepositories(Collections.singleton(request));
Assert.assertEquals(REPOS_CNT,responses.size());
RepositoryRequest requestWithParams=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,REPO_ID);
Set responsesWithParams=controller.getRepositories(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( RepositoryResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getRepoId(),REPO_ID);
}
RepositoryRequest invalidRequest=new RepositoryRequest(STACK_NAME,STACK_VERSION,OS_TYPE,NON_EXT_VALUE);
try {
controller.getRepositories(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDecommissonDatanodeAction() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-2.0.7"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
RequestOperationLevel level=new RequestOperationLevel(Resource.Type.HostComponent,clusterName,null,null,null);
installService(clusterName,serviceName,false,false);
Map configs=new HashMap();
configs.put("a","b");
ConfigurationRequest cr1;
cr1=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
startService(clusterName,serviceName,false,false);
cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
Assert.assertEquals(State.STARTED,s.getDesiredState());
ServiceComponentHost scHost=s.getServiceComponent("DATANODE").getServiceComponentHost("h2");
Assert.assertEquals(HostComponentAdminState.INSERVICE,scHost.getComponentAdminState());
Map params=new HashMap(){
{
put("test","test");
put("excluded_hosts","h2");
put("align_maintenance_state","true");
}
}
;
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS","NAMENODE",null);
ArrayList filters=new ArrayList();
filters.add(resourceFilter);
ExecuteActionRequest request=new ExecuteActionRequest(clusterName,"DECOMMISSION",null,filters,level,params,false);
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
RequestStatusResponse response=controller.createAction(request,requestProperties);
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
ExecutionCommand execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertNotNull(storedTasks);
Assert.assertNotNull(execCmd.getConfigurationTags().get("hdfs-site"));
Assert.assertEquals(1,storedTasks.size());
Assert.assertEquals(HostComponentAdminState.DECOMMISSIONED,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.ON,scHost.getMaintenanceState());
HostRoleCommand command=storedTasks.get(0);
Assert.assertEquals(Role.NAMENODE,command.getRole());
Assert.assertEquals(RoleCommand.CUSTOM_COMMAND,command.getRoleCommand());
Assert.assertEquals("DECOMMISSION",execCmd.getHostLevelParams().get("custom_command"));
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
params=new HashMap(){
{
put("test","test");
put("excluded_hosts","h1");
put("align_maintenance_state","true");
}
}
;
resourceFilter=new RequestResourceFilter("HDFS","NAMENODE",null);
filters=new ArrayList();
filters.add(resourceFilter);
request=new ExecuteActionRequest(clusterName,"DECOMMISSION",null,filters,level,params,false);
response=controller.createAction(request,requestProperties);
storedTasks=actionDB.getRequestTasks(response.getRequestId());
execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Map cmdParams=execCmd.getCommandParams();
Assert.assertTrue(cmdParams.containsKey("update_exclude_file_only"));
Assert.assertTrue(cmdParams.get("update_exclude_file_only").equals("false"));
Assert.assertNotNull(storedTasks);
Assert.assertEquals(1,storedTasks.size());
Assert.assertEquals(HostComponentAdminState.DECOMMISSIONED,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.ON,scHost.getMaintenanceState());
Assert.assertEquals("DECOMMISSION",execCmd.getHostLevelParams().get("custom_command"));
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
createServiceComponentHost(clusterName,serviceName,componentName1,host2,null);
ServiceComponentHostRequest r=new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host2,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
updateHostComponents(requests,Collections.emptyMap(),true);
s.getServiceComponent(componentName1).getServiceComponentHost(host2).setState(State.INSTALLED);
r=new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host2,State.STARTED.toString());
requests.clear();
requests.add(r);
updateHostComponents(requests,Collections.emptyMap(),true);
s.getServiceComponent(componentName1).getServiceComponentHost(host2).setState(State.STARTED);
params=new HashMap(){
{
put("test","test");
put("included_hosts","h1 , h2");
put("align_maintenance_state","true");
}
}
;
resourceFilter=new RequestResourceFilter("HDFS","NAMENODE",null);
filters=new ArrayList();
filters.add(resourceFilter);
request=new ExecuteActionRequest(clusterName,"DECOMMISSION",null,filters,level,params,false);
response=controller.createAction(request,requestProperties);
storedTasks=actionDB.getRequestTasks(response.getRequestId());
Assert.assertNotNull(storedTasks);
scHost=s.getServiceComponent("DATANODE").getServiceComponentHost("h2");
Assert.assertEquals(HostComponentAdminState.INSERVICE,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.OFF,scHost.getMaintenanceState());
execCmd=storedTasks.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertNotNull(storedTasks);
Assert.assertEquals(2,storedTasks.size());
int countRefresh=0;
for ( HostRoleCommand hrc : storedTasks) {
Assert.assertTrue("DECOMMISSION, Included: h1,h2".equals(hrc.getCommandDetail()));
Assert.assertTrue("DECOMMISSION".equals(hrc.getCustomCommandName()));
cmdParams=hrc.getExecutionCommandWrapper().getExecutionCommand().getCommandParams();
if (!cmdParams.containsKey("update_exclude_file_only") || !cmdParams.get("update_exclude_file_only").equals("true")) {
countRefresh++;
}
}
Assert.assertEquals(2,countRefresh);
scHost.setComponentAdminState(null);
Assert.assertEquals(HostComponentAdminState.INSERVICE,scHost.getComponentAdminState());
Assert.assertEquals(MaintenanceState.OFF,scHost.getMaintenanceState());
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testCreateClusterSimple() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
Set r=controller.getClusters(Collections.singleton(new ClusterRequest(null,clusterName,null,null)));
Assert.assertEquals(1,r.size());
ClusterResponse c=r.iterator().next();
Assert.assertEquals(clusterName,c.getClusterName());
try {
createCluster(clusterName);
fail("Duplicate cluster creation should fail");
}
catch ( AmbariException e) {
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testResourceFiltersWithCustomCommands() throws AmbariException, AuthorizationException {
setupClusterWithHosts("c1","HDP-2.0.6",new ArrayList(){
{
add("h1");
add("h2");
add("h3");
}
}
,"centos6");
Cluster cluster=clusters.getCluster("c1");
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.6"));
ConfigFactory cf=injector.getInstance(ConfigFactory.class);
Config config1=cf.createNew(cluster,"global",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=cf.createNew(cluster,"core-site",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config2.setTag("version1");
cluster.addConfig(config1);
cluster.addConfig(config2);
Service hdfs=cluster.addService("HDFS");
hdfs.persist();
Service mapred=cluster.addService("YARN");
mapred.persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
mapred.addServiceComponent(Role.RESOURCEMANAGER.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h2").persist();
mapred.getServiceComponent(Role.RESOURCEMANAGER.name()).addServiceComponentHost("h2").persist();
Map params=new HashMap(){
{
put("test","test");
}
}
;
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
List resourceFilters=new ArrayList();
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS",Role.DATANODE.name(),new ArrayList(){
{
add("h1");
add("h2");
}
}
);
resourceFilters.add(resourceFilter);
resourceFilter=new RequestResourceFilter("YARN",Role.RESOURCEMANAGER.name(),new ArrayList(){
{
add("h2");
}
}
);
resourceFilters.add(resourceFilter);
ExecuteActionRequest request=new ExecuteActionRequest("c1","RESTART",null,resourceFilters,null,params,false);
RequestStatusResponse response=controller.createAction(request,requestProperties);
Assert.assertEquals(3,response.getTasks().size());
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
Assert.assertNotNull(storedTasks);
int expectedRestartCount=0;
for ( HostRoleCommand hrc : storedTasks) {
Assert.assertEquals("RESTART",hrc.getCustomCommandName());
if (hrc.getHostName().equals("h1") && hrc.getRole().equals(Role.DATANODE)) {
expectedRestartCount++;
}
else if (hrc.getHostName().equals("h2")) {
if (hrc.getRole().equals(Role.DATANODE)) {
expectedRestartCount++;
}
else if (hrc.getRole().equals(Role.RESOURCEMANAGER)) {
expectedRestartCount++;
}
}
}
Assert.assertEquals("Restart 2 datanodes and 1 Resourcemanager.",3,expectedRestartCount);
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
resourceFilters.clear();
resourceFilter=new RequestResourceFilter("HDFS",null,new ArrayList(){
{
add("h1");
}
}
);
resourceFilters.add(resourceFilter);
request=new ExecuteActionRequest("c1",Role.HDFS_SERVICE_CHECK.name(),null,resourceFilters,null,null,false);
response=controller.createAction(request,requestProperties);
Assert.assertEquals(1,response.getTasks().size());
storedTasks=actionDB.getRequestTasks(response.getRequestId());
Assert.assertNotNull(storedTasks);
Assert.assertEquals(Role.HDFS_SERVICE_CHECK.name(),storedTasks.get(0).getRole().name());
Assert.assertEquals("h1",storedTasks.get(0).getHostName());
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@SuppressWarnings("serial") @Test public void testCreateServiceCheckActions() throws Exception {
setupClusterWithHosts("c1","HDP-0.1",new ArrayList(){
{
add("h1");
add("h2");
}
}
,"centos5");
Cluster cluster=clusters.getCluster("c1");
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
cluster.setCurrentStackVersion(new StackId("HDP-0.1"));
ConfigFactory cf=injector.getInstance(ConfigFactory.class);
Config config1=cf.createNew(cluster,"global",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config1.setTag("version1");
config1.setPropertiesAttributes(new HashMap>(){
{
put("attr1",new HashMap());
}
}
);
Config config2=cf.createNew(cluster,"core-site",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config2.setTag("version1");
config2.setPropertiesAttributes(new HashMap>(){
{
put("attr2",new HashMap());
}
}
);
cluster.addConfig(config1);
cluster.addConfig(config2);
cluster.addDesiredConfig("_test",Collections.singleton(config1));
cluster.addDesiredConfig("_test",Collections.singleton(config2));
Service hdfs=cluster.addService("HDFS");
Service mapReduce=cluster.addService("MAPREDUCE");
hdfs.persist();
mapReduce.persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
mapReduce.addServiceComponent(Role.MAPREDUCE_CLIENT.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost("h1").persist();
mapReduce.getServiceComponent(Role.MAPREDUCE_CLIENT.name()).addServiceComponentHost("h2").persist();
Map params=new HashMap(){
{
put("test","test");
}
}
;
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1",Role.HDFS_SERVICE_CHECK.name(),params,false);
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS",null,null);
actionRequest.getResourceFilters().add(resourceFilter);
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
RequestStatusResponse response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
ShortTaskStatus task=response.getTasks().get(0);
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
Stage stage=actionDB.getAllStages(response.getRequestId()).get(0);
ExecutionCommandDAO executionCommandDAO=injector.getInstance(ExecutionCommandDAO.class);
ExecutionCommandEntity commandEntity=executionCommandDAO.findByPK(task.getTaskId());
Gson gson=new Gson();
ExecutionCommand executionCommand=gson.fromJson(new StringReader(new String(commandEntity.getCommand())),ExecutionCommand.class);
assertFalse(executionCommand.getConfigurationTags().isEmpty());
assertTrue(executionCommand.getConfigurations() == null || executionCommand.getConfigurations().isEmpty());
assertEquals(1,storedTasks.size());
HostRoleCommand hostRoleCommand=storedTasks.get(0);
assertEquals("SERVICE_CHECK HDFS",hostRoleCommand.getCommandDetail());
assertNull(hostRoleCommand.getCustomCommandName());
assertEquals(task.getTaskId(),hostRoleCommand.getTaskId());
assertNotNull(actionRequest.getResourceFilters());
RequestResourceFilter requestResourceFilter=actionRequest.getResourceFilters().get(0);
assertEquals(resourceFilter.getServiceName(),hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getServiceName());
assertEquals(actionRequest.getClusterName(),hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getClusterName());
assertEquals(actionRequest.getCommandName(),hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getRole());
assertEquals(Role.HDFS_CLIENT.name(),hostRoleCommand.getEvent().getEvent().getServiceComponentName());
assertEquals(actionRequest.getParameters(),hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getRoleParams());
assertNotNull(hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getConfigurations());
assertEquals(2,hostRoleCommand.getExecutionCommandWrapper().getExecutionCommand().getConfigurations().size());
assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),stage.getRequestContext());
assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
actionRequest=new ExecuteActionRequest("c1",Role.MAPREDUCE_SERVICE_CHECK.name(),null,false);
resourceFilter=new RequestResourceFilter("MAPREDUCE",null,null);
actionRequest.getResourceFilters().add(resourceFilter);
injector.getInstance(ActionMetadata.class).addServiceCheckAction("MAPREDUCE");
response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
List tasks=actionDB.getRequestTasks(response.getRequestId());
assertEquals(1,tasks.size());
requestProperties.put(REQUEST_CONTEXT_PROPERTY,null);
response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
assertEquals("",response.getRequestContext());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testGetServiceComponentsWithFilters() throws AmbariException {
clusters.addCluster("c1",new StackId("HDP-0.2"));
clusters.addCluster("c2",new StackId("HDP-0.2"));
Cluster c1=clusters.getCluster("c1");
Cluster c2=clusters.getCluster("c2");
Service s1=serviceFactory.createNew(c1,"HDFS");
Service s2=serviceFactory.createNew(c1,"MAPREDUCE");
Service s3=serviceFactory.createNew(c1,"HBASE");
Service s4=serviceFactory.createNew(c2,"HIVE");
Service s5=serviceFactory.createNew(c2,"ZOOKEEPER");
c1.addService(s1);
c1.addService(s2);
c1.addService(s3);
c2.addService(s4);
c2.addService(s5);
s1.setDesiredState(State.INSTALLED);
s2.setDesiredState(State.INSTALLED);
s4.setDesiredState(State.INSTALLED);
s1.persist();
s2.persist();
s3.persist();
s4.persist();
s5.persist();
ServiceComponent sc1=serviceComponentFactory.createNew(s1,"DATANODE");
ServiceComponent sc2=serviceComponentFactory.createNew(s1,"NAMENODE");
ServiceComponent sc3=serviceComponentFactory.createNew(s3,"HBASE_REGIONSERVER");
ServiceComponent sc4=serviceComponentFactory.createNew(s4,"HIVE_SERVER");
ServiceComponent sc5=serviceComponentFactory.createNew(s4,"HIVE_CLIENT");
ServiceComponent sc6=serviceComponentFactory.createNew(s4,"MYSQL_SERVER");
ServiceComponent sc7=serviceComponentFactory.createNew(s5,"ZOOKEEPER_SERVER");
ServiceComponent sc8=serviceComponentFactory.createNew(s5,"ZOOKEEPER_CLIENT");
s1.addServiceComponent(sc1);
s1.addServiceComponent(sc2);
s3.addServiceComponent(sc3);
s4.addServiceComponent(sc4);
s4.addServiceComponent(sc5);
s4.addServiceComponent(sc6);
s5.addServiceComponent(sc7);
s5.addServiceComponent(sc8);
sc1.setDesiredState(State.UNINSTALLED);
sc3.setDesiredState(State.UNINSTALLED);
sc5.setDesiredState(State.UNINSTALLED);
sc6.setDesiredState(State.UNINSTALLED);
sc7.setDesiredState(State.UNINSTALLED);
sc8.setDesiredState(State.UNINSTALLED);
sc1.persist();
sc2.persist();
sc3.persist();
sc4.persist();
sc5.persist();
sc6.persist();
sc7.persist();
sc8.persist();
ServiceComponentRequest r=new ServiceComponentRequest(null,null,null,null);
try {
ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
fail("Expected failure for invalid cluster");
}
catch ( Exception e) {
}
r=new ServiceComponentRequest(c1.getClusterName(),null,null,null);
Set resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(3,resps.size());
r=new ServiceComponentRequest(c2.getClusterName(),null,null,State.UNINSTALLED.toString());
resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(4,resps.size());
r=new ServiceComponentRequest(c2.getClusterName(),s5.getName(),null,null);
resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(2,resps.size());
r=new ServiceComponentRequest(c2.getClusterName(),s4.getName(),null,State.INIT.toString());
resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(1,resps.size());
Assert.assertEquals(sc4.getName(),resps.iterator().next().getComponentName());
r=new ServiceComponentRequest(c2.getClusterName(),null,sc5.getName(),State.INIT.toString());
resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(1,resps.size());
Assert.assertEquals(sc5.getName(),resps.iterator().next().getComponentName());
r=new ServiceComponentRequest(c2.getClusterName(),s4.getName(),sc5.getName(),State.INIT.toString());
resps=ComponentResourceProviderTest.getComponents(controller,Collections.singleton(r));
Assert.assertEquals(1,resps.size());
Assert.assertEquals(sc5.getName(),resps.iterator().next().getComponentName());
ServiceComponentRequest r1, r2, r3;
Set reqs=new HashSet();
r1=new ServiceComponentRequest(c2.getClusterName(),null,null,State.UNINSTALLED.toString());
r2=new ServiceComponentRequest(c1.getClusterName(),null,null,null);
r3=new ServiceComponentRequest(c1.getClusterName(),null,null,State.INIT.toString());
reqs.addAll(Arrays.asList(r1,r2,r3));
resps=ComponentResourceProviderTest.getComponents(controller,reqs);
Assert.assertEquals(7,resps.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConfigInComponent() throws Exception {
StackServiceRequest requestWithParams=new StackServiceRequest(STACK_NAME,"2.0.6","YARN");
Set responsesWithParams=controller.getStackServices(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackServiceResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getServiceName(),"YARN");
Assert.assertTrue(responseWithParams.getConfigTypes().containsKey("capacity-scheduler"));
}
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServicesMultiple() throws AmbariException, AuthorizationException {
Set set1=new HashSet();
clusters.addCluster("foo",new StackId("HDP-0.1"));
ServiceRequest valid1=new ServiceRequest("foo","HDFS",null);
ServiceRequest valid2=new ServiceRequest("foo","MAPREDUCE",null);
set1.add(valid1);
set1.add(valid2);
ServiceResourceProviderTest.createServices(controller,set1);
try {
valid1=new ServiceRequest("foo","PIG",null);
valid2=new ServiceRequest("foo","MAPREDUCE",null);
set1.add(valid1);
set1.add(valid2);
ServiceResourceProviderTest.createServices(controller,set1);
fail("Expected failure for invalid services");
}
catch ( AmbariException e) {
Assert.assertTrue(checkExceptionType(e,DuplicateResourceException.class));
}
Assert.assertNotNull(clusters.getCluster("foo"));
Assert.assertEquals(2,clusters.getCluster("foo").getServices().size());
Assert.assertNotNull(clusters.getCluster("foo").getService("HDFS"));
Assert.assertNotNull(clusters.getCluster("foo").getService("MAPREDUCE"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostLevelParamsSentWithCommands() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="PIG";
createService(clusterName,serviceName,null);
String componentName1="PIG";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,null,componentName1,host2,null);
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
RequestStatusResponse trackAction=ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
List stages=actionDB.getAllStages(trackAction.getRequestId());
Type type=new TypeToken>(){
}
.getType();
for ( Stage stage : stages) {
Map params=StageUtils.getGson().fromJson(stage.getHostParamsStage(),type);
Assert.assertEquals("0.1",params.get("stack_version"));
Assert.assertNotNull(params.get("jdk_location"));
Assert.assertNotNull(params.get("db_name"));
Assert.assertNotNull(params.get("mysql_jdbc_url"));
Assert.assertNotNull(params.get("oracle_jdbc_url"));
}
Map paramsCmd=stages.get(0).getOrderedHostRoleCommands().get(0).getExecutionCommandWrapper().getExecutionCommand().getHostLevelParams();
Assert.assertNotNull(paramsCmd.get("repo_info"));
Assert.assertNotNull(paramsCmd.get("clientsToUpdateConfigs"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateCustomActionNoCluster() throws Exception {
String hostname1="h1";
String hostname2="h2";
addHost(hostname1);
addHost(hostname2);
ambariMetaInfo.addActionDefinition(new ActionDefinition("a1",ActionType.SYSTEM,"","","","action def description",TargetHostType.ANY,Short.valueOf("60")));
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
Map requestParams=new HashMap();
requestParams.put("some_custom_param","abc");
List hosts=Arrays.asList(hostname1);
RequestResourceFilter resourceFilter=new RequestResourceFilter(null,null,hosts);
List resourceFilters=new ArrayList();
resourceFilters.add(resourceFilter);
ExecuteActionRequest actionRequest=new ExecuteActionRequest(null,null,"a1",resourceFilters,null,requestParams,false);
RequestStatusResponse response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
ShortTaskStatus taskStatus=response.getTasks().get(0);
Assert.assertEquals(hostname1,taskStatus.getHostName());
Stage stage=actionDB.getAllStages(response.getRequestId()).get(0);
Assert.assertNotNull(stage);
Assert.assertEquals(-1L,stage.getClusterId());
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
Assert.assertEquals(1,storedTasks.size());
HostRoleCommand task=storedTasks.get(0);
Assert.assertEquals(RoleCommand.ACTIONEXECUTE,task.getRoleCommand());
Assert.assertEquals("a1",task.getRole().name());
Assert.assertEquals(hostname1,task.getHostName());
ExecutionCommand cmd=task.getExecutionCommandWrapper().getExecutionCommand();
Type type=new TypeToken>(){
}
.getType();
Map commandParamsStage=StageUtils.getGson().fromJson(stage.getCommandParamsStage(),type);
Assert.assertTrue(commandParamsStage.containsKey("some_custom_param"));
Assert.assertEquals(null,cmd.getServiceName());
Assert.assertEquals(null,cmd.getComponentName());
Assert.assertTrue(cmd.getLocalComponents().isEmpty());
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
hosts=Arrays.asList(hostname1,hostname2);
resourceFilter=new RequestResourceFilter(null,null,hosts);
resourceFilters=new ArrayList();
resourceFilters.add(resourceFilter);
actionRequest=new ExecuteActionRequest(null,null,"a1",resourceFilters,null,requestParams,false);
response=controller.createAction(actionRequest,requestProperties);
assertEquals(2,response.getTasks().size());
boolean host1Found=false;
boolean host2Found=false;
for ( ShortTaskStatus sts : response.getTasks()) {
if (sts.getHostName().equals(hostname1)) {
host1Found=true;
}
else if (sts.getHostName().equals(hostname2)) {
host2Found=true;
}
}
Assert.assertTrue(host1Found);
Assert.assertTrue(host2Found);
stage=actionDB.getAllStages(response.getRequestId()).get(0);
Assert.assertNotNull(stage);
Assert.assertEquals(-1L,stage.getClusterId());
storedTasks=actionDB.getRequestTasks(response.getRequestId());
Assert.assertEquals(2,storedTasks.size());
task=storedTasks.get(0);
Assert.assertEquals(RoleCommand.ACTIONEXECUTE,task.getRoleCommand());
Assert.assertEquals("a1",task.getRole().name());
Assert.assertEquals(hostname1,task.getHostName());
cmd=task.getExecutionCommandWrapper().getExecutionCommand();
commandParamsStage=StageUtils.getGson().fromJson(stage.getCommandParamsStage(),type);
Assert.assertTrue(commandParamsStage.containsKey("some_custom_param"));
Assert.assertEquals(null,cmd.getServiceName());
Assert.assertEquals(null,cmd.getComponentName());
Assert.assertTrue(cmd.getLocalComponents().isEmpty());
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testGetExecutionCommandWithClusterEnvForRetry() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Map configs=new HashMap();
configs.put("a","b");
configs.put("command_retry_enabled","true");
configs.put("command_retry_max_time_in_sec","5");
configs.put("commands_to_retry","INSTALL");
ConfigurationRequest cr1;
cr1=new ConfigurationRequest(clusterName,"cluster-env","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
ServiceComponentHostRequest schr=new ServiceComponentHostRequest(clusterName,"HDFS","DATANODE",host2,"INSTALLED");
Map requestProps=new HashMap();
requestProps.put("phase","INITIAL_INSTALL");
RequestStatusResponse rsr=updateHostComponents(Collections.singleton(schr),requestProps,false);
List stages=actionDB.getAllStages(rsr.getRequestId());
Assert.assertEquals(1,stages.size());
Stage stage=stages.iterator().next();
List execWrappers=stage.getExecutionCommands(host2);
Assert.assertEquals(1,execWrappers.size());
ExecutionCommandWrapper execWrapper=execWrappers.iterator().next();
ExecutionCommand ec=execWrapper.getExecutionCommand();
Map> configurations=ec.getConfigurations();
assertNotNull(configurations);
assertEquals(1,configurations.size());
assertTrue(configurations.containsKey("cluster-env"));
assertTrue(ec.getCommandParams().containsKey("max_duration_for_retries"));
assertEquals("5",ec.getCommandParams().get("max_duration_for_retries"));
assertTrue(ec.getCommandParams().containsKey("command_retry_enabled"));
assertEquals("true",ec.getCommandParams().get("command_retry_enabled"));
for ( ServiceComponentHost sch : clusters.getCluster(clusterName).getServiceComponentHosts(host2)) {
sch.setState(State.INSTALLED);
}
schr=new ServiceComponentHostRequest(clusterName,"HDFS","DATANODE",host2,"STARTED");
rsr=updateHostComponents(Collections.singleton(schr),requestProps,false);
stages=actionDB.getAllStages(rsr.getRequestId());
Assert.assertEquals(1,stages.size());
stage=stages.iterator().next();
execWrappers=stage.getExecutionCommands(host2);
Assert.assertEquals(1,execWrappers.size());
execWrapper=execWrappers.iterator().next();
ec=execWrapper.getExecutionCommand();
configurations=ec.getConfigurations();
assertNotNull(configurations);
assertEquals(1,configurations.size());
assertTrue(configurations.containsKey("cluster-env"));
assertTrue(ec.getCommandParams().containsKey("max_duration_for_retries"));
assertEquals("5",ec.getCommandParams().get("max_duration_for_retries"));
assertTrue(ec.getCommandParams().containsKey("command_retry_enabled"));
assertEquals("false",ec.getCommandParams().get("command_retry_enabled"));
configs.put("command_retry_enabled","true");
configs.put("command_retry_max_time_in_sec","12");
configs.put("commands_to_retry","START");
cr1=new ConfigurationRequest(clusterName,"cluster-env","version2",configs,null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
requestProps.put("phase","INITIAL_START");
schr=new ServiceComponentHostRequest(clusterName,"HDFS","DATANODE",host2,"STARTED");
rsr=updateHostComponents(Collections.singleton(schr),requestProps,false);
stages=actionDB.getAllStages(rsr.getRequestId());
Assert.assertEquals(1,stages.size());
stage=stages.iterator().next();
execWrappers=stage.getExecutionCommands(host2);
Assert.assertEquals(1,execWrappers.size());
execWrapper=execWrappers.iterator().next();
ec=execWrapper.getExecutionCommand();
configurations=ec.getConfigurations();
assertNotNull(configurations);
assertEquals(1,configurations.size());
assertTrue(configurations.containsKey("cluster-env"));
assertTrue(ec.getCommandParams().containsKey("max_duration_for_retries"));
assertEquals("12",ec.getCommandParams().get("max_duration_for_retries"));
assertTrue(ec.getCommandParams().containsKey("command_retry_enabled"));
assertEquals("true",ec.getCommandParams().get("command_retry_enabled"));
configs.put("command_retry_enabled","asdf");
configs.put("command_retry_max_time_in_sec","-5");
configs.put("commands_to_retry2","START");
cr1=new ConfigurationRequest(clusterName,"cluster-env","version3",configs,null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
requestProps.put("phase","INITIAL_START");
schr=new ServiceComponentHostRequest(clusterName,"HDFS","DATANODE",host2,"STARTED");
rsr=updateHostComponents(Collections.singleton(schr),requestProps,false);
stages=actionDB.getAllStages(rsr.getRequestId());
Assert.assertEquals(1,stages.size());
stage=stages.iterator().next();
execWrappers=stage.getExecutionCommands(host2);
Assert.assertEquals(1,execWrappers.size());
execWrapper=execWrappers.iterator().next();
ec=execWrapper.getExecutionCommand();
configurations=ec.getConfigurations();
assertNotNull(configurations);
assertEquals(1,configurations.size());
assertTrue(configurations.containsKey("cluster-env"));
assertTrue(ec.getCommandParams().containsKey("max_duration_for_retries"));
assertEquals("0",ec.getCommandParams().get("max_duration_for_retries"));
assertTrue(ec.getCommandParams().containsKey("command_retry_enabled"));
assertEquals("false",ec.getCommandParams().get("command_retry_enabled"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateHostComponentsBadState() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host2));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host2));
ServiceRequest r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
Set requests=new HashSet();
requests.add(r);
ServiceResourceProviderTest.updateServices(controller,requests,mapRequestProps,true,false);
Assert.assertEquals(State.INSTALLED,clusters.getCluster(clusterName).getService(serviceName).getDesiredState());
for ( ServiceComponentHost sch : clusters.getCluster(clusterName).getServiceComponentHosts(host1)) {
sch.setState(State.INSTALLED);
}
for ( ServiceComponentHost sch : clusters.getCluster(clusterName).getServiceComponentHosts(host2)) {
sch.setState(State.UNKNOWN);
}
ServiceComponentHostRequest schr=new ServiceComponentHostRequest(clusterName,"HDFS","DATANODE",host2,"INSTALLED");
Map requestProps=new HashMap();
requestProps.put("datanode","dn_value");
requestProps.put("namenode","nn_value");
RequestStatusResponse rsr=updateHostComponents(Collections.singleton(schr),requestProps,false);
List stages=actionDB.getAllStages(rsr.getRequestId());
Assert.assertEquals(1,stages.size());
Stage stage=stages.iterator().next();
List execWrappers=stage.getExecutionCommands(host2);
Assert.assertEquals(1,execWrappers.size());
ExecutionCommandWrapper execWrapper=execWrappers.iterator().next();
Assert.assertTrue(execWrapper.getExecutionCommand().getCommandParams().containsKey("datanode"));
Assert.assertFalse(execWrapper.getExecutionCommand().getCommandParams().containsKey("namendode"));
for ( ServiceComponentHost sch : clusters.getCluster(clusterName).getServiceComponentHosts(host2)) {
Assert.assertEquals(State.UNKNOWN,sch.getState());
}
}
APIUtilityVerifier InternalCallVerifier ConditionMatcher
@Test public void testGetPackagesForServiceHost() throws Exception {
ServiceInfo service=ambariMetaInfo.getStack("HDP","2.0.1").getService("HIVE");
HashMap hostParams=new HashMap();
Map packages=new HashMap();
String[] packageNames={"hive","mysql-connector-java","mysql","mysql-server","mysql-client"};
for ( String packageName : packageNames) {
ServiceOsSpecific.Package pkg=new ServiceOsSpecific.Package();
pkg.setName(packageName);
packages.put(packageName,pkg);
}
List rhel5Packages=controller.getPackagesForServiceHost(service,hostParams,"redhat5");
List expectedRhel5=Arrays.asList(packages.get("hive"),packages.get("mysql-connector-java"),packages.get("mysql"),packages.get("mysql-server"));
List sles11Packages=controller.getPackagesForServiceHost(service,hostParams,"suse11");
List expectedSles11=Arrays.asList(packages.get("hive"),packages.get("mysql-connector-java"),packages.get("mysql"),packages.get("mysql-client"));
assertThat(rhel5Packages,is(expectedRhel5));
assertThat(sles11Packages,is(expectedSles11));
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testServiceComponentHostUpdateRecursive() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
String serviceName1="HDFS";
createService(clusterName,serviceName1,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName1,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Set set1=new HashSet();
ServiceComponentHostRequest r1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INIT.toString());
ServiceComponentHostRequest r2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host1,State.INIT.toString());
ServiceComponentHostRequest r3=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INIT.toString());
ServiceComponentHostRequest r4=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host2,State.INIT.toString());
ServiceComponentHostRequest r5=new ServiceComponentHostRequest(clusterName,serviceName1,componentName3,host1,State.INIT.toString());
set1.add(r1);
set1.add(r2);
set1.add(r3);
set1.add(r4);
set1.add(r5);
controller.createHostComponents(set1);
Cluster c1=clusters.getCluster(clusterName);
Service s1=c1.getService(serviceName1);
ServiceComponent sc1=s1.getServiceComponent(componentName1);
ServiceComponent sc2=s1.getServiceComponent(componentName2);
ServiceComponent sc3=s1.getServiceComponent(componentName3);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
ServiceComponentHost sch2=sc2.getServiceComponentHost(host1);
ServiceComponentHost sch3=sc1.getServiceComponentHost(host2);
ServiceComponentHost sch4=sc2.getServiceComponentHost(host2);
ServiceComponentHost sch5=sc3.getServiceComponentHost(host1);
s1.setDesiredState(State.INIT);
sc1.setDesiredState(State.INIT);
sc2.setDesiredState(State.INIT);
sc3.setDesiredState(State.INIT);
sch1.setDesiredState(State.INIT);
sch2.setDesiredState(State.INIT);
sch3.setDesiredState(State.INIT);
sch4.setDesiredState(State.INSTALLED);
sch5.setDesiredState(State.INSTALLED);
sch1.setState(State.INIT);
sch2.setState(State.INSTALL_FAILED);
sch3.setState(State.INIT);
sch4.setState(State.INSTALLED);
sch5.setState(State.INSTALLED);
ServiceComponentHostRequest req1, req2, req3, req4, req5;
Set reqs=new HashSet();
try {
reqs.clear();
req1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INSTALLED.toString());
req2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INSTALLED.toString());
req3=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host1,State.INSTALLED.toString());
req4=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host2,State.INSTALLED.toString());
req5=new ServiceComponentHostRequest(clusterName,serviceName1,componentName3,host1,State.STARTED.toString());
reqs.add(req1);
reqs.add(req2);
reqs.add(req3);
reqs.add(req4);
reqs.add(req5);
updateHostComponents(reqs,Collections.emptyMap(),true);
}
catch ( Exception e) {
fail("Failure for invalid states");
}
reqs.clear();
req1=new ServiceComponentHostRequest(clusterName,null,componentName1,host1,State.INSTALLED.toString());
req2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INSTALLED.toString());
req3=new ServiceComponentHostRequest(clusterName,null,componentName2,host1,State.INSTALLED.toString());
req4=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host2,State.INSTALLED.toString());
req5=new ServiceComponentHostRequest(clusterName,serviceName1,componentName3,host1,State.INSTALLED.toString());
reqs.add(req1);
reqs.add(req2);
reqs.add(req3);
reqs.add(req4);
reqs.add(req5);
RequestStatusResponse trackAction=updateHostComponents(reqs,Collections.emptyMap(),true);
Assert.assertNotNull(trackAction);
long requestId=trackAction.getRequestId();
Assert.assertFalse(actionDB.getAllStages(requestId).isEmpty());
List stages=actionDB.getAllStages(requestId);
for ( Stage stage : stages) {
LOG.debug("Stage dump: " + stage.toString());
}
sch1.setState(State.INSTALLED);
sch2.setState(State.INSTALLED);
sch3.setState(State.INSTALLED);
sch4.setState(State.INSTALLED);
sch5.setState(State.INSTALLED);
reqs.clear();
req1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INSTALLED.toString());
req2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INSTALLED.toString());
reqs.add(req1);
reqs.add(req2);
trackAction=updateHostComponents(reqs,Collections.emptyMap(),true);
Assert.assertNull(trackAction);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRootServices() throws Exception {
RootServiceRequest request=new RootServiceRequest(null);
Set responses=controller.getRootServices(Collections.singleton(request));
Assert.assertEquals(RootServiceResponseFactory.Services.values().length,responses.size());
RootServiceRequest requestWithParams=new RootServiceRequest(RootServiceResponseFactory.Services.AMBARI.toString());
Set responsesWithParams=controller.getRootServices(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( RootServiceResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getServiceName(),RootServiceResponseFactory.Services.AMBARI.toString());
}
RootServiceRequest invalidRequest=new RootServiceRequest(NON_EXT_VALUE);
try {
controller.getRootServices(Collections.singleton(invalidRequest));
}
catch ( ObjectNotFoundException e) {
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testReInstallClientComponent() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-2.0.6"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
String host3="h3";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
addHostToCluster(host3,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host3,null);
installService(clusterName,serviceName,false,false);
ServiceComponentHostRequest schr=new ServiceComponentHostRequest(clusterName,serviceName,componentName3,host3,State.INSTALLED.name());
Set setReqs=new HashSet();
setReqs.add(schr);
RequestStatusResponse resp=updateHostComponents(setReqs,Collections.emptyMap(),false);
Assert.assertNotNull(resp);
Assert.assertTrue(resp.getRequestId() > 0);
List stages=actionDB.getAllStages(resp.getRequestId());
HostRoleCommand clientReinstallCmd=null;
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getHostName().equals(host3) && hrc.getRole().toString().equals("HDFS_CLIENT")) {
clientReinstallCmd=hrc;
break;
}
}
}
Assert.assertNotNull(clientReinstallCmd);
}
UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceComponentWithInvalidRequest() throws AmbariException, AuthorizationException {
Set set1=new HashSet();
try {
set1.clear();
ServiceComponentRequest rInvalid=new ServiceComponentRequest(null,null,null,null);
set1.add(rInvalid);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for invalid requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceComponentRequest rInvalid=new ServiceComponentRequest("c1",null,null,null);
set1.add(rInvalid);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for invalid requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceComponentRequest rInvalid=new ServiceComponentRequest("c1","s1",null,null);
set1.add(rInvalid);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for invalid requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceComponentRequest rInvalid=new ServiceComponentRequest("c1","s1","sc1",null);
set1.add(rInvalid);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for invalid cluster");
}
catch ( ParentObjectNotFoundException e) {
}
clusters.addCluster("c1",new StackId("HDP-0.1"));
clusters.addCluster("c2",new StackId("HDP-0.1"));
try {
set1.clear();
ServiceComponentRequest rInvalid=new ServiceComponentRequest("c1","HDFS","NAMENODE",null);
set1.add(rInvalid);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for invalid service");
}
catch ( ParentObjectNotFoundException e) {
}
Cluster c1=clusters.getCluster("c1");
StackId stackId=new StackId("HDP-0.1");
c1.setDesiredStackVersion(stackId);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Service s1=serviceFactory.createNew(c1,"HDFS");
Service s2=serviceFactory.createNew(c1,"MAPREDUCE");
c1.addService(s1);
c1.addService(s2);
s1.persist();
s2.persist();
set1.clear();
ServiceComponentRequest valid1=new ServiceComponentRequest("c1","HDFS","NAMENODE",null);
ServiceComponentRequest valid2=new ServiceComponentRequest("c1","MAPREDUCE","JOBTRACKER",null);
ServiceComponentRequest valid3=new ServiceComponentRequest("c1","MAPREDUCE","TASKTRACKER",null);
set1.add(valid1);
set1.add(valid2);
set1.add(valid3);
ComponentResourceProviderTest.createComponents(controller,set1);
try {
set1.clear();
ServiceComponentRequest rInvalid1=new ServiceComponentRequest("c1","HDFS","HDFS_CLIENT",null);
ServiceComponentRequest rInvalid2=new ServiceComponentRequest("c1","HDFS","HDFS_CLIENT",null);
set1.add(rInvalid1);
set1.add(rInvalid2);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for dups in requests");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceComponentRequest rInvalid1=new ServiceComponentRequest("c1","HDFS","HDFS_CLIENT",null);
ServiceComponentRequest rInvalid2=new ServiceComponentRequest("c2","HDFS","HDFS_CLIENT",null);
set1.add(rInvalid1);
set1.add(rInvalid2);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for multiple clusters");
}
catch ( Exception e) {
}
try {
set1.clear();
ServiceComponentRequest rInvalid=new ServiceComponentRequest("c1","HDFS","NAMENODE",null);
set1.add(rInvalid);
ComponentResourceProviderTest.createComponents(controller,set1);
fail("Expected failure for already existing component");
}
catch ( Exception e) {
}
Assert.assertEquals(1,s1.getServiceComponents().size());
Assert.assertNotNull(s1.getServiceComponent("NAMENODE"));
Assert.assertEquals(2,s2.getServiceComponents().size());
Assert.assertNotNull(s2.getServiceComponent("JOBTRACKER"));
Assert.assertNotNull(s2.getServiceComponent("TASKTRACKER"));
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReconfigureClientWithServiceStarted() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Map configs=new HashMap();
configs.put("a","b");
Map configs2=new HashMap();
configs2.put("c","d");
ConfigurationRequest cr1, cr2, cr3;
cr1=new ConfigurationRequest(clusterName,"core-site","version1",configs,null);
cr2=new ConfigurationRequest(clusterName,"hdfs-site","version1",configs,null);
ClusterRequest crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr1));
controller.updateClusters(Collections.singleton(crReq),null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
installService(clusterName,serviceName,false,false);
startService(clusterName,serviceName,false,false);
Cluster c=clusters.getCluster(clusterName);
Service s=c.getService(serviceName);
stopServiceComponentHosts(clusterName,serviceName);
Assert.assertEquals(State.STARTED,s.getDesiredState());
for ( ServiceComponent sc : s.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
}
}
cr3=new ConfigurationRequest(clusterName,"core-site","version122",configs2,null);
crReq=new ClusterRequest(cluster.getClusterId(),clusterName,null,null);
crReq.setDesiredConfig(Collections.singletonList(cr3));
controller.updateClusters(Collections.singleton(crReq),null);
long id=startService(clusterName,serviceName,false,true);
List stages=actionDB.getAllStages(id);
HostRoleCommand clientHrc=null;
for ( Stage stage : stages) {
for ( HostRoleCommand hrc : stage.getOrderedHostRoleCommands()) {
if (hrc.getHostName().equals(host2) && hrc.getRole().toString().equals("HDFS_CLIENT")) {
clientHrc=hrc;
Assert.assertEquals("version122",hrc.getExecutionCommandWrapper().getExecutionCommand().getConfigurationTags().get("core-site").get("tag"));
}
}
}
Assert.assertNotNull(clientHrc);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetStackOperatingSystems() throws Exception {
OperatingSystemRequest request=new OperatingSystemRequest(STACK_NAME,STACK_VERSION,null);
Set responses=controller.getOperatingSystems(Collections.singleton(request));
Assert.assertEquals(OS_CNT,responses.size());
OperatingSystemRequest requestWithParams=new OperatingSystemRequest(STACK_NAME,STACK_VERSION,OS_TYPE);
Set responsesWithParams=controller.getOperatingSystems(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( OperatingSystemResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getOsType(),OS_TYPE);
}
OperatingSystemRequest invalidRequest=new OperatingSystemRequest(STACK_NAME,STACK_VERSION,NON_EXT_VALUE);
try {
controller.getOperatingSystems(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
}
InternalCallVerifier NullVerifier
@Test public void testReinstallClientSchSkippedInMaintenance() throws Exception {
Cluster c1=setupClusterWithHosts("c1","HDP-1.2.0",new ArrayList(){
{
add("h1");
add("h2");
add("h3");
}
}
,"centos5");
Service hdfs=c1.addService("HDFS");
hdfs.persist();
createServiceComponent("c1","HDFS","NAMENODE",State.INIT);
createServiceComponent("c1","HDFS","DATANODE",State.INIT);
createServiceComponent("c1","HDFS","HDFS_CLIENT",State.INIT);
createServiceComponentHost("c1","HDFS","NAMENODE","h1",State.INIT);
createServiceComponentHost("c1","HDFS","DATANODE","h1",State.INIT);
createServiceComponentHost("c1","HDFS","HDFS_CLIENT","h1",State.INIT);
createServiceComponentHost("c1","HDFS","HDFS_CLIENT","h2",State.INIT);
createServiceComponentHost("c1","HDFS","HDFS_CLIENT","h3",State.INIT);
installService("c1","HDFS",false,false);
clusters.getHost("h3").setMaintenanceState(c1.getClusterId(),MaintenanceState.ON);
Long id=startService("c1","HDFS",false,true);
Assert.assertNotNull(id);
List stages=actionDB.getAllStages(id);
Assert.assertNotNull(stages);
HostRoleCommand hrc1=null;
HostRoleCommand hrc2=null;
HostRoleCommand hrc3=null;
for ( Stage s : stages) {
for ( HostRoleCommand hrc : s.getOrderedHostRoleCommands()) {
if (hrc.getRole().equals(Role.HDFS_CLIENT) && hrc.getHostName().equals("h1")) {
hrc1=hrc;
}
else if (hrc.getRole().equals(Role.HDFS_CLIENT) && hrc.getHostName().equals("h2")) {
hrc2=hrc;
}
else if (hrc.getRole().equals(Role.HDFS_CLIENT) && hrc.getHostName().equals("h3")) {
hrc3=hrc;
}
}
}
Assert.assertNotNull(hrc1);
Assert.assertNotNull(hrc2);
Assert.assertNull(hrc3);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSkipTaskOnUnhealthyHosts() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
String host1="h1";
String host2="h2";
String host3="h3";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
addHostToCluster(host3,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host3,null);
installService(clusterName,serviceName,false,false);
clusters.getHost("h1").setState(HostState.HEALTHY);
clusters.getHost("h2").setState(HostState.HEALTHY);
clusters.getHost("h3").setState(HostState.HEARTBEAT_LOST);
long requestId=startService(clusterName,serviceName,true,false);
List commands=actionDB.getRequestTasks(requestId);
Assert.assertEquals(3,commands.size());
int commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.START) {
Assert.assertTrue(command.getHostName().equals("h1") || command.getHostName().equals("h2"));
commandCount++;
}
}
Assert.assertEquals("Expect only two task.",2,commandCount);
stopService(clusterName,serviceName,false,false);
clusters.getHost("h1").setState(HostState.HEARTBEAT_LOST);
clusters.getHost("h2").setState(HostState.HEARTBEAT_LOST);
clusters.getHost("h3").setState(HostState.HEALTHY);
requestId=startService(clusterName,serviceName,true,false);
commands=actionDB.getRequestTasks(requestId);
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.START) {
Assert.assertTrue(command.getHostName().equals("h3"));
commandCount++;
}
}
Assert.assertEquals("Expect only one task.",1,commandCount);
stopService(clusterName,serviceName,false,false);
clusters.getHost("h1").setState(HostState.HEALTHY);
clusters.getHost("h2").setState(HostState.HEALTHY);
clusters.getHost("h3").setState(HostState.HEALTHY);
requestId=startService(clusterName,serviceName,true,false);
commands=actionDB.getRequestTasks(requestId);
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.START) {
Assert.assertTrue(command.getHostName().equals("h3") || command.getHostName().equals("h2") || command.getHostName().equals("h1"));
commandCount++;
}
}
Assert.assertEquals("Expect all three task.",3,commandCount);
clusters.getHost("h2").setState(HostState.HEARTBEAT_LOST);
requestId=stopService(clusterName,serviceName,false,false);
commands=actionDB.getRequestTasks(requestId);
Assert.assertEquals(2,commands.size());
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.STOP) {
Assert.assertTrue(command.getHostName().equals("h3") || command.getHostName().equals("h1"));
commandCount++;
}
}
Assert.assertEquals("Expect only two task.",2,commandCount);
Cluster cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
ServiceComponent sc3=s.getServiceComponent(componentName2);
for ( ServiceComponentHost sch : sc3.getServiceComponentHosts().values()) {
if (sch.getHostName().equals("h3")) {
sch.setState(State.INSTALL_FAILED);
}
}
clusters.getHost("h3").setState(HostState.HEARTBEAT_LOST);
clusters.getHost("h2").setState(HostState.HEALTHY);
requestId=installService(clusterName,serviceName,false,false);
Assert.assertEquals(-1,requestId);
clusters.getHost("h3").setState(HostState.HEALTHY);
requestId=installService(clusterName,serviceName,false,false);
commands=actionDB.getRequestTasks(requestId);
Assert.assertEquals(1,commands.size());
commandCount=0;
for ( HostRoleCommand command : commands) {
if (command.getRoleCommand() == RoleCommand.INSTALL) {
Assert.assertTrue(command.getHostName().equals("h3"));
commandCount++;
}
}
Assert.assertEquals("Expect only one task.",1,commandCount);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMaintenanceState() throws Exception {
String clusterName="c1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-1.2.0"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,serviceName,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
Map requestProperties=new HashMap();
requestProperties.put("context","Called from a test");
Cluster cluster=clusters.getCluster(clusterName);
Service service=cluster.getService(serviceName);
Map hosts=clusters.getHostsForCluster(clusterName);
MaintenanceStateHelper maintenanceStateHelper=MaintenanceStateHelperTest.getMaintenanceStateHelperInstance(clusters);
ServiceRequest sr=new ServiceRequest(clusterName,serviceName,null);
sr.setMaintenanceState(MaintenanceState.ON.name());
ServiceResourceProviderTest.updateServices(controller,Collections.singleton(sr),requestProperties,false,false,maintenanceStateHelper);
Assert.assertEquals(MaintenanceState.ON,service.getMaintenanceState());
for ( ServiceComponent sc : service.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_SERVICE,controller.getEffectiveMaintenanceState(sch));
Assert.assertEquals(MaintenanceState.OFF,sch.getMaintenanceState());
}
}
sr.setMaintenanceState(MaintenanceState.OFF.name());
ServiceResourceProviderTest.updateServices(controller,Collections.singleton(sr),requestProperties,false,false,maintenanceStateHelper);
Assert.assertEquals(MaintenanceState.OFF,service.getMaintenanceState());
for ( ServiceComponent sc : service.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(MaintenanceState.OFF,controller.getEffectiveMaintenanceState(sch));
Assert.assertEquals(MaintenanceState.OFF,sch.getMaintenanceState());
}
}
HostRequest hr=new HostRequest(host1,clusterName,requestProperties);
hr.setMaintenanceState(MaintenanceState.ON.name());
HostResourceProviderTest.updateHosts(controller,Collections.singleton(hr));
Host host=hosts.get(host1);
Assert.assertEquals(MaintenanceState.ON,host.getMaintenanceState(cluster.getClusterId()));
for ( ServiceComponent sc : service.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
MaintenanceState implied=controller.getEffectiveMaintenanceState(sch);
if (sch.getHostName().equals(host1)) {
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_HOST,implied);
}
else {
Assert.assertEquals(MaintenanceState.OFF,implied);
}
Assert.assertEquals(MaintenanceState.OFF,sch.getMaintenanceState());
}
}
hr.setMaintenanceState(MaintenanceState.OFF.name());
HostResourceProviderTest.updateHosts(controller,Collections.singleton(hr));
host=hosts.get(host1);
Assert.assertEquals(MaintenanceState.OFF,host.getMaintenanceState(cluster.getClusterId()));
for ( ServiceComponent sc : service.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(MaintenanceState.OFF,controller.getEffectiveMaintenanceState(sch));
Assert.assertEquals(MaintenanceState.OFF,sch.getMaintenanceState());
}
}
HostRequest hr1=new HostRequest(host1,clusterName,requestProperties);
hr1.setMaintenanceState(MaintenanceState.ON.name());
HostRequest hr2=new HostRequest(host2,clusterName,requestProperties);
hr2.setMaintenanceState(MaintenanceState.ON.name());
Set set=new HashSet();
set.add(hr1);
set.add(hr2);
HostResourceProviderTest.updateHosts(controller,set);
host=hosts.get(host1);
Assert.assertEquals(MaintenanceState.ON,host.getMaintenanceState(cluster.getClusterId()));
host=hosts.get(host2);
Assert.assertEquals(MaintenanceState.ON,host.getMaintenanceState(cluster.getClusterId()));
hr1=new HostRequest(host1,clusterName,requestProperties);
hr1.setMaintenanceState(MaintenanceState.OFF.name());
hr2=new HostRequest(host2,clusterName,requestProperties);
hr2.setMaintenanceState(MaintenanceState.OFF.name());
set=new HashSet();
set.add(hr1);
set.add(hr2);
HostResourceProviderTest.updateHosts(controller,set);
host=hosts.get(host1);
Assert.assertEquals(MaintenanceState.OFF,host.getMaintenanceState(cluster.getClusterId()));
host=hosts.get(host2);
Assert.assertEquals(MaintenanceState.OFF,host.getMaintenanceState(cluster.getClusterId()));
ServiceComponentHost targetSch=service.getServiceComponent(componentName2).getServiceComponentHosts().get(host2);
Assert.assertNotNull(targetSch);
targetSch.setMaintenanceState(MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.ON,controller.getEffectiveMaintenanceState(targetSch));
service.setMaintenanceState(MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.ON,controller.getEffectiveMaintenanceState(targetSch));
targetSch.setMaintenanceState(MaintenanceState.OFF);
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_SERVICE,controller.getEffectiveMaintenanceState(targetSch));
service.setMaintenanceState(MaintenanceState.OFF);
Assert.assertEquals(MaintenanceState.OFF,controller.getEffectiveMaintenanceState(targetSch));
host=hosts.get(host2);
host.setMaintenanceState(cluster.getClusterId(),MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_HOST,controller.getEffectiveMaintenanceState(targetSch));
targetSch.setMaintenanceState(MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.ON,controller.getEffectiveMaintenanceState(targetSch));
for ( ServiceComponent sc : service.getServiceComponents().values()) {
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(State.INIT,sch.getState());
}
}
long id1=installService(clusterName,serviceName,false,false,maintenanceStateHelper,null);
List hdfsCmds=actionDB.getRequestTasks(id1);
Assert.assertNotNull(hdfsCmds);
HostRoleCommand datanodeCmd=null;
for ( HostRoleCommand cmd : hdfsCmds) {
if (cmd.getRole().equals(Role.DATANODE)) {
datanodeCmd=cmd;
}
}
Assert.assertNotNull(datanodeCmd);
for ( ServiceComponent sc : service.getServiceComponents().values()) {
if (!sc.getName().equals(componentName2)) {
continue;
}
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
Assert.assertEquals(sch == targetSch ? State.INIT : State.INSTALLED,sch.getState());
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testExecutionCommandConfiguration() throws AmbariException {
Map> config=new HashMap>();
config.put("type1",new HashMap());
config.put("type3",new HashMap());
config.get("type3").put("name1","neverchange");
configHelper.applyCustomConfig(config,"type1","name1","value11",false);
Assert.assertEquals("value11",config.get("type1").get("name1"));
config.put("type1",new HashMap());
configHelper.applyCustomConfig(config,"type1","name1","value12",false);
Assert.assertEquals("value12",config.get("type1").get("name1"));
configHelper.applyCustomConfig(config,"type2","name2","value21",false);
Assert.assertEquals("value21",config.get("type2").get("name2"));
configHelper.applyCustomConfig(config,"type2","name2","",true);
Assert.assertEquals("",config.get("type2").get("DELETED_name2"));
Assert.assertEquals("neverchange",config.get("type3").get("name1"));
Map persistedClusterConfig=new HashMap();
persistedClusterConfig.put("name1","value11");
persistedClusterConfig.put("name3","value31");
persistedClusterConfig.put("name4","value41");
Map override=new HashMap();
override.put("name1","value12");
override.put("name2","value21");
override.put("DELETED_name3","value31");
Map mergedConfig=configHelper.getMergedConfig(persistedClusterConfig,override);
Assert.assertEquals(3,mergedConfig.size());
Assert.assertFalse(mergedConfig.containsKey("name3"));
Assert.assertEquals("value12",mergedConfig.get("name1"));
Assert.assertEquals("value21",mergedConfig.get("name2"));
Assert.assertEquals("value41",mergedConfig.get("name4"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateCustomActions() throws Exception {
setupClusterWithHosts("c1","HDP-2.0.6",new ArrayList(){
{
add("h1");
add("h2");
add("h3");
}
}
,"centos6");
Cluster cluster=clusters.getCluster("c1");
cluster.setDesiredStackVersion(new StackId("HDP-2.0.6"));
cluster.setCurrentStackVersion(new StackId("HDP-2.0.6"));
ConfigFactory cf=injector.getInstance(ConfigFactory.class);
Config config1=cf.createNew(cluster,"global",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=cf.createNew(cluster,"core-site",new HashMap(){
{
put("key1","value1");
}
}
,new HashMap>());
config2.setTag("version1");
Config config3=cf.createNew(cluster,"yarn-site",new HashMap(){
{
put("test.password","supersecret");
}
}
,new HashMap>());
config3.setTag("version1");
cluster.addConfig(config1);
cluster.addConfig(config2);
cluster.addConfig(config3);
Service hdfs=cluster.addService("HDFS");
hdfs.persist();
Service mapred=cluster.addService("YARN");
mapred.persist();
hdfs.addServiceComponent(Role.HDFS_CLIENT.name()).persist();
hdfs.addServiceComponent(Role.NAMENODE.name()).persist();
hdfs.addServiceComponent(Role.DATANODE.name()).persist();
mapred.addServiceComponent(Role.RESOURCEMANAGER.name()).persist();
hdfs.getServiceComponent(Role.HDFS_CLIENT.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.NAMENODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h1").persist();
hdfs.getServiceComponent(Role.DATANODE.name()).addServiceComponentHost("h2").persist();
ActionDefinition a1=new ActionDefinition("a1",ActionType.SYSTEM,"test,[optional1]","","","Does file exist",TargetHostType.SPECIFIC,Short.valueOf("100"));
controller.getAmbariMetaInfo().addActionDefinition(a1);
controller.getAmbariMetaInfo().addActionDefinition(new ActionDefinition("a2",ActionType.SYSTEM,"","HDFS","DATANODE","Does file exist",TargetHostType.ALL,Short.valueOf("1000")));
Map params=new HashMap(){
{
put("test","test");
put("pwd","SECRET:yarn-site:1:test.password");
}
}
;
Map requestProperties=new HashMap();
requestProperties.put(REQUEST_CONTEXT_PROPERTY,"Called from a test");
requestProperties.put("datanode","abc");
ArrayList hosts=new ArrayList(){
{
add("h1");
}
}
;
RequestResourceFilter resourceFilter=new RequestResourceFilter("HDFS","DATANODE",hosts);
List resourceFilters=new ArrayList();
resourceFilters.add(resourceFilter);
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1",null,"a1",resourceFilters,null,params,false);
RequestStatusResponse response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
ShortTaskStatus taskStatus=response.getTasks().get(0);
Assert.assertEquals("h1",taskStatus.getHostName());
List storedTasks=actionDB.getRequestTasks(response.getRequestId());
Stage stage=actionDB.getAllStages(response.getRequestId()).get(0);
Assert.assertNotNull(stage);
Assert.assertEquals(1,storedTasks.size());
HostRoleCommand task=storedTasks.get(0);
Assert.assertEquals(RoleCommand.ACTIONEXECUTE,task.getRoleCommand());
Assert.assertEquals("a1",task.getRole().name());
Assert.assertEquals("h1",task.getHostName());
ExecutionCommand cmd=task.getExecutionCommandWrapper().getExecutionCommand();
Assert.assertEquals("h1",cmd.getHostname());
Assert.assertFalse(cmd.getLocalComponents().isEmpty());
Assert.assertTrue(cmd.getLocalComponents().contains(Role.DATANODE.name()));
Assert.assertTrue(cmd.getLocalComponents().contains(Role.NAMENODE.name()));
Assert.assertTrue(cmd.getLocalComponents().contains(Role.HDFS_CLIENT.name()));
Assert.assertFalse(cmd.getLocalComponents().contains(Role.RESOURCEMANAGER.name()));
Type type=new TypeToken>(){
}
.getType();
Map hostParametersStage=StageUtils.getGson().fromJson(stage.getHostParamsStage(),type);
Map commandParametersStage=StageUtils.getGson().fromJson(stage.getCommandParamsStage(),type);
Assert.assertTrue(commandParametersStage.containsKey("test"));
Assert.assertTrue(commandParametersStage.containsKey("pwd"));
Assert.assertEquals(commandParametersStage.get("pwd"),"supersecret");
Assert.assertEquals("HDFS",cmd.getServiceName());
Assert.assertEquals("DATANODE",cmd.getComponentName());
Assert.assertNotNull(hostParametersStage.get("jdk_location"));
Assert.assertEquals("900",cmd.getCommandParams().get("command_timeout"));
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
a1.setDefaultTimeout((short)1800);
actionRequest=new ExecuteActionRequest("c1",null,"a1",resourceFilters,null,params,false);
response=controller.createAction(actionRequest,requestProperties);
List storedTasks1=actionDB.getRequestTasks(response.getRequestId());
cmd=storedTasks1.get(0).getExecutionCommandWrapper().getExecutionCommand();
Assert.assertEquals("1800",cmd.getCommandParams().get("command_timeout"));
resourceFilters.clear();
resourceFilter=new RequestResourceFilter("","",null);
resourceFilters.add(resourceFilter);
actionRequest=new ExecuteActionRequest("c1",null,"a2",resourceFilters,null,params,false);
response=controller.createAction(actionRequest,requestProperties);
assertEquals(2,response.getTasks().size());
final List storedTasks2=actionDB.getRequestTasks(response.getRequestId());
task=storedTasks2.get(1);
Assert.assertEquals(RoleCommand.ACTIONEXECUTE,task.getRoleCommand());
Assert.assertEquals("a2",task.getRole().name());
HashSet expectedHosts=new HashSet(){
{
add("h2");
add("h1");
}
}
;
HashSet actualHosts=new HashSet(){
{
add(storedTasks2.get(1).getHostName());
add(storedTasks2.get(0).getHostName());
}
}
;
Assert.assertEquals(expectedHosts,actualHosts);
cmd=task.getExecutionCommandWrapper().getExecutionCommand();
commandParametersStage=StageUtils.getGson().fromJson(stage.getCommandParamsStage(),type);
Assert.assertTrue(commandParametersStage.containsKey("test"));
Assert.assertTrue(commandParametersStage.containsKey("pwd"));
Assert.assertEquals(commandParametersStage.get("pwd"),"supersecret");
Assert.assertEquals("HDFS",cmd.getServiceName());
Assert.assertEquals("DATANODE",cmd.getComponentName());
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
Assert.assertEquals("h2",cmd.getHostname());
Assert.assertFalse(cmd.getLocalComponents().isEmpty());
Assert.assertTrue(cmd.getLocalComponents().contains(Role.DATANODE.name()));
Assert.assertFalse(cmd.getLocalComponents().contains(Role.NAMENODE.name()));
Assert.assertFalse(cmd.getLocalComponents().contains(Role.HDFS_CLIENT.name()));
Assert.assertFalse(cmd.getLocalComponents().contains(Role.RESOURCEMANAGER.name()));
hosts=new ArrayList(){
{
add("h3");
}
}
;
resourceFilters.clear();
resourceFilter=new RequestResourceFilter("","",hosts);
resourceFilters.add(resourceFilter);
actionRequest=new ExecuteActionRequest("c1",null,"a1",resourceFilters,null,params,false);
response=controller.createAction(actionRequest,requestProperties);
assertEquals(1,response.getTasks().size());
taskStatus=response.getTasks().get(0);
Assert.assertEquals("h3",taskStatus.getHostName());
Assert.assertEquals(requestProperties.get(REQUEST_CONTEXT_PROPERTY),response.getRequestContext());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRootServiceComponents() throws Exception {
RootServiceComponentRequest request=new RootServiceComponentRequest(RootServiceResponseFactory.Services.AMBARI.toString(),null);
Set responses=controller.getRootServiceComponents(Collections.singleton(request));
Assert.assertEquals(RootServiceResponseFactory.Services.AMBARI.getComponents().length,responses.size());
RootServiceComponentRequest requestWithParams=new RootServiceComponentRequest(RootServiceResponseFactory.Services.AMBARI.toString(),RootServiceResponseFactory.Services.AMBARI.getComponents()[0].toString());
Set responsesWithParams=controller.getRootServiceComponents(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( RootServiceComponentResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getComponentName(),RootServiceResponseFactory.Services.AMBARI.getComponents()[0].toString());
}
RootServiceComponentRequest invalidRequest=new RootServiceComponentRequest(NON_EXT_VALUE,NON_EXT_VALUE);
try {
controller.getRootServiceComponents(Collections.singleton(invalidRequest));
}
catch ( ObjectNotFoundException e) {
}
}
InternalCallVerifier NullVerifier
@Test public void testConfigUpdates() throws Exception {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.1"));
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HDFS_CLIENT";
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName,componentName3,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
createServiceComponentHost(clusterName,null,componentName1,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName2,host2,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host1,null);
createServiceComponentHost(clusterName,serviceName,componentName3,host2,null);
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host2));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName3).getServiceComponentHost(host2));
Map configs=new HashMap();
configs.put("a","b");
Map> configAttributes=new HashMap>();
configAttributes.put("final",new HashMap());
configAttributes.get("final").put("a","true");
ConfigurationRequest cr1, cr2, cr3, cr4, cr5, cr6, cr7, cr8;
cr1=new ConfigurationRequest(clusterName,"typeA","v1",configs,configAttributes);
cr2=new ConfigurationRequest(clusterName,"typeB","v1",configs,configAttributes);
cr3=new ConfigurationRequest(clusterName,"typeC","v1",configs,configAttributes);
cr4=new ConfigurationRequest(clusterName,"typeD","v1",configs,configAttributes);
cr5=new ConfigurationRequest(clusterName,"typeA","v2",configs,configAttributes);
cr6=new ConfigurationRequest(clusterName,"typeB","v2",configs,configAttributes);
cr7=new ConfigurationRequest(clusterName,"typeC","v2",configs,configAttributes);
cr8=new ConfigurationRequest(clusterName,"typeE","v1",configs,configAttributes);
controller.createConfiguration(cr1);
controller.createConfiguration(cr2);
controller.createConfiguration(cr3);
controller.createConfiguration(cr4);
controller.createConfiguration(cr5);
controller.createConfiguration(cr6);
controller.createConfiguration(cr7);
controller.createConfiguration(cr8);
Cluster cluster=clusters.getCluster(clusterName);
Service s=cluster.getService(serviceName);
ServiceComponent sc1=s.getServiceComponent(componentName1);
ServiceComponent sc2=s.getServiceComponent(componentName2);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
Set schReqs=new HashSet();
Set scReqs=new HashSet();
Set sReqs=new HashSet();
Map configVersions=new HashMap();
configVersions.clear();
configVersions.put("typeA","v1");
configVersions.put("typeB","v1");
configVersions.put("typeC","v1");
schReqs.clear();
schReqs.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
Assert.assertNull(updateHostComponents(schReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("typeC","v1");
configVersions.put("typeD","v1");
scReqs.clear();
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName2,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("typeA","v2");
configVersions.put("typeC","v2");
configVersions.put("typeE","v1");
sReqs.clear();
sReqs.add(new ServiceRequest(clusterName,serviceName,null));
Assert.assertNull(ServiceResourceProviderTest.updateServices(controller,sReqs,mapRequestProps,true,false));
configVersions.clear();
configVersions.put("typeA","v1");
configVersions.put("typeB","v1");
configVersions.put("typeC","v1");
schReqs.clear();
schReqs.add(new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,null));
Assert.assertNull(updateHostComponents(schReqs,Collections.emptyMap(),true));
configVersions.clear();
configVersions.put("typeC","v2");
configVersions.put("typeD","v1");
scReqs.clear();
scReqs.add(new ServiceComponentRequest(clusterName,serviceName,componentName1,null));
Assert.assertNull(ComponentResourceProviderTest.updateComponents(controller,scReqs,Collections.emptyMap(),true));
}
APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceUpdateRecursive() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
clusters.getCluster(clusterName).setDesiredStackVersion(new StackId("HDP-0.2"));
String serviceName1="HDFS";
createService(clusterName,serviceName1,null);
String serviceName2="HBASE";
createService(clusterName,serviceName2,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
String componentName3="HBASE_MASTER";
String componentName4="HDFS_CLIENT";
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
createServiceComponent(clusterName,serviceName1,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName2,State.INIT);
createServiceComponent(clusterName,serviceName2,componentName3,State.INIT);
createServiceComponent(clusterName,serviceName1,componentName4,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Set set1=new HashSet();
ServiceComponentHostRequest r1=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host1,State.INIT.toString());
ServiceComponentHostRequest r2=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host1,State.INIT.toString());
ServiceComponentHostRequest r3=new ServiceComponentHostRequest(clusterName,serviceName1,componentName1,host2,State.INIT.toString());
ServiceComponentHostRequest r4=new ServiceComponentHostRequest(clusterName,serviceName1,componentName2,host2,State.INIT.toString());
ServiceComponentHostRequest r5=new ServiceComponentHostRequest(clusterName,serviceName2,componentName3,host1,State.INIT.toString());
ServiceComponentHostRequest r6=new ServiceComponentHostRequest(clusterName,serviceName1,componentName4,host2,State.INIT.toString());
set1.add(r1);
set1.add(r2);
set1.add(r3);
set1.add(r4);
set1.add(r5);
set1.add(r6);
controller.createHostComponents(set1);
Cluster c1=clusters.getCluster(clusterName);
Service s1=c1.getService(serviceName1);
Service s2=c1.getService(serviceName2);
ServiceComponent sc1=s1.getServiceComponent(componentName1);
ServiceComponent sc2=s1.getServiceComponent(componentName2);
ServiceComponent sc3=s2.getServiceComponent(componentName3);
ServiceComponent sc4=s1.getServiceComponent(componentName4);
ServiceComponentHost sch1=sc1.getServiceComponentHost(host1);
ServiceComponentHost sch2=sc2.getServiceComponentHost(host1);
ServiceComponentHost sch3=sc1.getServiceComponentHost(host2);
ServiceComponentHost sch4=sc2.getServiceComponentHost(host2);
ServiceComponentHost sch5=sc3.getServiceComponentHost(host1);
ServiceComponentHost sch6=sc4.getServiceComponentHost(host2);
s1.setDesiredState(State.INSTALLED);
s2.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.STARTED);
sc2.setDesiredState(State.INIT);
sc3.setDesiredState(State.STARTED);
sc4.setDesiredState(State.INSTALLED);
sch1.setDesiredState(State.INSTALLED);
sch2.setDesiredState(State.INSTALLED);
sch3.setDesiredState(State.INSTALLED);
sch4.setDesiredState(State.INSTALLED);
sch5.setDesiredState(State.INSTALLED);
sch6.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLED);
sch2.setState(State.INSTALLED);
sch3.setState(State.INSTALLED);
sch4.setState(State.INSTALLED);
sch5.setState(State.INSTALLED);
sch6.setState(State.INSTALLED);
Set reqs=new HashSet();
ServiceRequest req1, req2;
try {
reqs.clear();
req1=new ServiceRequest(clusterName,serviceName1,State.STARTED.toString());
reqs.add(req1);
ServiceResourceProviderTest.updateServices(controller,reqs,mapRequestProps,true,false);
fail("Expected failure for invalid state update");
}
catch ( Exception e) {
}
s1.setDesiredState(State.INSTALLED);
s2.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.STARTED);
sc2.setDesiredState(State.INSTALLED);
sc3.setDesiredState(State.STARTED);
sch1.setDesiredState(State.INSTALLED);
sch2.setDesiredState(State.INSTALLED);
sch3.setDesiredState(State.INSTALLED);
sch4.setDesiredState(State.INSTALLED);
sch5.setDesiredState(State.INSTALLED);
sch1.setState(State.INIT);
sch2.setState(State.INSTALLED);
sch3.setState(State.INIT);
sch4.setState(State.INSTALLED);
sch5.setState(State.INSTALLED);
try {
reqs.clear();
req1=new ServiceRequest(clusterName,serviceName1,State.STARTED.toString());
reqs.add(req1);
ServiceResourceProviderTest.updateServices(controller,reqs,mapRequestProps,true,false);
fail("Expected failure for invalid state update");
}
catch ( Exception e) {
}
s1.setDesiredState(State.INSTALLED);
s2.setDesiredState(State.INSTALLED);
sc1.setDesiredState(State.STARTED);
sc2.setDesiredState(State.INSTALLED);
sc3.setDesiredState(State.STARTED);
sch1.setDesiredState(State.STARTED);
sch2.setDesiredState(State.STARTED);
sch3.setDesiredState(State.STARTED);
sch4.setDesiredState(State.STARTED);
sch5.setDesiredState(State.STARTED);
sch1.setState(State.INSTALLED);
sch2.setState(State.INSTALLED);
sch3.setState(State.INSTALLED);
sch4.setState(State.STARTED);
sch5.setState(State.INSTALLED);
reqs.clear();
req1=new ServiceRequest(clusterName,serviceName1,State.STARTED.toString());
req2=new ServiceRequest(clusterName,serviceName2,State.STARTED.toString());
reqs.add(req1);
reqs.add(req2);
RequestStatusResponse trackAction=ServiceResourceProviderTest.updateServices(controller,reqs,mapRequestProps,true,false);
Assert.assertEquals(State.STARTED,s1.getDesiredState());
Assert.assertEquals(State.STARTED,s2.getDesiredState());
Assert.assertEquals(State.STARTED,sc1.getDesiredState());
Assert.assertEquals(State.STARTED,sc2.getDesiredState());
Assert.assertEquals(State.STARTED,sc3.getDesiredState());
Assert.assertEquals(State.INSTALLED,sc4.getDesiredState());
Assert.assertEquals(State.STARTED,sch1.getDesiredState());
Assert.assertEquals(State.STARTED,sch2.getDesiredState());
Assert.assertEquals(State.STARTED,sch3.getDesiredState());
Assert.assertEquals(State.STARTED,sch4.getDesiredState());
Assert.assertEquals(State.STARTED,sch5.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch6.getDesiredState());
Assert.assertEquals(State.INSTALLED,sch1.getState());
Assert.assertEquals(State.INSTALLED,sch2.getState());
Assert.assertEquals(State.INSTALLED,sch3.getState());
Assert.assertEquals(State.STARTED,sch4.getState());
Assert.assertEquals(State.INSTALLED,sch5.getState());
Assert.assertEquals(State.INSTALLED,sch6.getState());
long requestId=trackAction.getRequestId();
List stages=actionDB.getAllStages(requestId);
for ( Stage stage : stages) {
LOG.debug("Stage dump: " + stage.toString());
}
Assert.assertTrue(!stages.isEmpty());
Assert.assertEquals(3,stages.size());
Stage stage1=null, stage2=null, stage3=null;
for ( Stage s : stages) {
if (s.getStageId() == 0) {
stage1=s;
}
if (s.getStageId() == 1) {
stage2=s;
}
if (s.getStageId() == 2) {
stage3=s;
}
}
Assert.assertEquals(2,stage1.getExecutionCommands(host1).size());
Assert.assertEquals(1,stage1.getExecutionCommands(host2).size());
Assert.assertEquals(1,stage2.getExecutionCommands(host1).size());
Assert.assertNotNull(stage1.getExecutionCommandWrapper(host1,"NAMENODE"));
Assert.assertNotNull(stage1.getExecutionCommandWrapper(host1,"DATANODE"));
Assert.assertNotNull(stage1.getExecutionCommandWrapper(host2,"NAMENODE"));
Assert.assertNotNull(stage2.getExecutionCommandWrapper(host1,"HBASE_MASTER"));
Assert.assertNull(stage1.getExecutionCommandWrapper(host2,"DATANODE"));
Assert.assertNotNull(stage3.getExecutionCommandWrapper(host1,"HBASE_SERVICE_CHECK"));
Assert.assertNotNull(stage2.getExecutionCommandWrapper(host2,"HDFS_SERVICE_CHECK"));
Type type=new TypeToken>(){
}
.getType();
for ( Stage s : stages) {
for ( List list : s.getExecutionCommands().values()) {
for ( ExecutionCommandWrapper ecw : list) {
if (ecw.getExecutionCommand().getRole().contains("SERVICE_CHECK")) {
Map hostParams=StageUtils.getGson().fromJson(s.getHostParamsStage(),type);
Assert.assertNotNull(hostParams);
Assert.assertTrue(hostParams.size() > 0);
Assert.assertTrue(hostParams.containsKey("stack_version"));
Assert.assertEquals(hostParams.get("stack_version"),c1.getDesiredStackVersion().getStackVersion());
}
}
}
}
sch1.setState(State.STARTED);
sch2.setState(State.STARTED);
sch3.setState(State.STARTED);
sch4.setState(State.STARTED);
sch5.setState(State.STARTED);
reqs.clear();
req1=new ServiceRequest(clusterName,serviceName1,State.STARTED.toString());
req2=new ServiceRequest(clusterName,serviceName2,State.STARTED.toString());
reqs.add(req1);
reqs.add(req2);
trackAction=ServiceResourceProviderTest.updateServices(controller,reqs,mapRequestProps,true,false);
Assert.assertNull(trackAction);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testStackServiceCheckSupported() throws Exception {
StackServiceRequest hdfsServiceRequest=new StackServiceRequest(STACK_NAME,"2.0.8",SERVICE_NAME);
Set responses=controller.getStackServices(Collections.singleton(hdfsServiceRequest));
Assert.assertEquals(1,responses.size());
StackServiceResponse response=responses.iterator().next();
assertTrue(response.isServiceCheckSupported());
StackServiceRequest fakeServiceRequest=new StackServiceRequest(STACK_NAME,"2.0.8",FAKE_SERVICE_NAME);
responses=controller.getStackServices(Collections.singleton(fakeServiceRequest));
Assert.assertEquals(1,responses.size());
response=responses.iterator().next();
assertFalse(response.isServiceCheckSupported());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceComponentHostMultiple() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
String serviceName="HDFS";
createService(clusterName,serviceName,null);
String componentName1="NAMENODE";
String componentName2="DATANODE";
createServiceComponent(clusterName,serviceName,componentName1,State.INIT);
createServiceComponent(clusterName,serviceName,componentName2,State.INIT);
String host1="h1";
String host2="h2";
addHostToCluster(host1,clusterName);
addHostToCluster(host2,clusterName);
Set set1=new HashSet();
ServiceComponentHostRequest r1=new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host1,State.INIT.toString());
ServiceComponentHostRequest r2=new ServiceComponentHostRequest(clusterName,serviceName,componentName2,host1,State.INIT.toString());
ServiceComponentHostRequest r3=new ServiceComponentHostRequest(clusterName,serviceName,componentName1,host2,State.INIT.toString());
ServiceComponentHostRequest r4=new ServiceComponentHostRequest(clusterName,serviceName,componentName2,host2,State.INIT.toString());
set1.add(r1);
set1.add(r2);
set1.add(r3);
set1.add(r4);
controller.createHostComponents(set1);
Assert.assertEquals(2,clusters.getCluster(clusterName).getServiceComponentHosts(host1).size());
Assert.assertEquals(2,clusters.getCluster(clusterName).getServiceComponentHosts(host2).size());
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName1).getServiceComponentHost(host2));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host1));
Assert.assertNotNull(clusters.getCluster(clusterName).getService(serviceName).getServiceComponent(componentName2).getServiceComponentHost(host2));
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceUpdateBasic() throws AmbariException, AuthorizationException {
String clusterName="foo1";
createCluster(clusterName);
String serviceName="HDFS";
Map mapRequestProps=new HashMap();
mapRequestProps.put("context","Called from a test");
clusters.getCluster("foo1").setDesiredStackVersion(new StackId("HDP-0.2"));
createService(clusterName,serviceName,State.INIT);
Service s=clusters.getCluster(clusterName).getService(serviceName);
Assert.assertNotNull(s);
Assert.assertEquals(serviceName,s.getName());
Assert.assertEquals(State.INIT,s.getDesiredState());
Assert.assertEquals(clusterName,s.getCluster().getClusterName());
Set reqs=new HashSet();
ServiceRequest r;
try {
r=new ServiceRequest(clusterName,serviceName,State.INSTALLING.toString());
reqs.clear();
reqs.add(r);
ServiceResourceProviderTest.updateServices(controller,reqs,mapRequestProps,true,false);
fail("Expected fail for invalid state transition");
}
catch ( Exception e) {
}
r=new ServiceRequest(clusterName,serviceName,State.INSTALLED.toString());
reqs.clear();
reqs.add(r);
RequestStatusResponse trackAction=ServiceResourceProviderTest.updateServices(controller,reqs,mapRequestProps,true,false);
Assert.assertNull(trackAction);
}
UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateHostSimple() throws AmbariException {
Map hostAttributes=null;
HostRequest r1=new HostRequest("h1",null,hostAttributes);
r1.toString();
Set requests=new HashSet();
requests.add(r1);
try {
HostResourceProviderTest.createHosts(controller,requests);
fail("Create host should fail for non-bootstrapped host");
}
catch ( Exception e) {
}
clusters.addHost("h1");
clusters.addHost("h2");
setOsFamily(clusters.getHost("h1"),"redhat","5.9");
setOsFamily(clusters.getHost("h2"),"redhat","5.9");
clusters.getHost("h1").persist();
clusters.getHost("h2").persist();
requests.add(new HostRequest("h2","foo",new HashMap()));
try {
HostResourceProviderTest.createHosts(controller,requests);
fail("Create host should fail for invalid clusters");
}
catch ( Exception e) {
}
clusters.addCluster("foo",new StackId("HDP-0.1"));
Cluster c=clusters.getCluster("foo");
StackId stackId=new StackId("HDP-0.1");
c.setDesiredStackVersion(stackId);
c.setCurrentStackVersion(stackId);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
HostResourceProviderTest.createHosts(controller,requests);
Assert.assertNotNull(clusters.getHost("h1"));
Assert.assertNotNull(clusters.getHost("h2"));
Assert.assertEquals(0,clusters.getClustersForHost("h1").size());
Assert.assertEquals(1,clusters.getClustersForHost("h2").size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceWidgetCreationOnServiceCreate() throws Exception {
String clusterName="foo1";
ClusterRequest r=new ClusterRequest(null,clusterName,State.INSTALLED.name(),SecurityType.NONE,"OTHER-2.0",null);
controller.createCluster(r);
String serviceName="HBASE";
clusters.getCluster("foo1").setDesiredStackVersion(new StackId("OTHER-2.0"));
createService(clusterName,serviceName,State.INIT);
Service s=clusters.getCluster(clusterName).getService(serviceName);
Assert.assertNotNull(s);
Assert.assertEquals(serviceName,s.getName());
Assert.assertEquals(clusterName,s.getCluster().getClusterName());
WidgetDAO widgetDAO=injector.getInstance(WidgetDAO.class);
WidgetLayoutDAO widgetLayoutDAO=injector.getInstance(WidgetLayoutDAO.class);
List widgetEntities=widgetDAO.findAll();
List layoutEntities=widgetLayoutDAO.findAll();
Assert.assertNotNull(widgetEntities);
Assert.assertFalse(widgetEntities.isEmpty());
Assert.assertNotNull(layoutEntities);
Assert.assertFalse(layoutEntities.isEmpty());
WidgetEntity candidateVisibleEntity=null;
for ( WidgetEntity entity : widgetEntities) {
if (entity.getWidgetName().equals("OPEN_CONNECTIONS")) {
candidateVisibleEntity=entity;
}
}
Assert.assertNotNull(candidateVisibleEntity);
Assert.assertEquals("GRAPH",candidateVisibleEntity.getWidgetType());
Assert.assertEquals("ambari",candidateVisibleEntity.getAuthor());
Assert.assertEquals("CLUSTER",candidateVisibleEntity.getScope());
Assert.assertNotNull(candidateVisibleEntity.getMetrics());
Assert.assertNotNull(candidateVisibleEntity.getProperties());
Assert.assertNotNull(candidateVisibleEntity.getWidgetValues());
WidgetLayoutEntity candidateLayoutEntity=null;
for ( WidgetLayoutEntity entity : layoutEntities) {
if (entity.getLayoutName().equals("default_hbase_layout")) {
candidateLayoutEntity=entity;
}
}
Assert.assertNotNull(candidateLayoutEntity);
List layoutUserWidgetEntities=candidateLayoutEntity.getListWidgetLayoutUserWidgetEntity();
Assert.assertNotNull(layoutUserWidgetEntities);
Assert.assertEquals(4,layoutUserWidgetEntities.size());
Assert.assertEquals("RS_READS_WRITES",layoutUserWidgetEntities.get(0).getWidget().getWidgetName());
Assert.assertEquals("OPEN_CONNECTIONS",layoutUserWidgetEntities.get(1).getWidget().getWidgetName());
Assert.assertEquals("FILES_LOCAL",layoutUserWidgetEntities.get(2).getWidget().getWidgetName());
Assert.assertEquals("UPDATED_BLOCKED_TIME",layoutUserWidgetEntities.get(3).getWidget().getWidgetName());
Assert.assertEquals("HBASE_SUMMARY",layoutUserWidgetEntities.get(0).getWidget().getDefaultSectionName());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetUsers() throws Exception {
createUser("user1");
createUser("user2");
createUser("user3");
UserRequest request=new UserRequest(null);
Set responses=controller.getUsers(Collections.singleton(request));
Assert.assertEquals(3,responses.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetStackConfigurations() throws Exception {
StackConfigurationRequest request=new StackConfigurationRequest(STACK_NAME,STACK_VERSION,SERVICE_NAME,null);
Set responses=controller.getStackConfigurations(Collections.singleton(request));
Assert.assertEquals(STACK_PROPERTIES_CNT,responses.size());
StackConfigurationRequest requestWithParams=new StackConfigurationRequest(STACK_NAME,STACK_VERSION,SERVICE_NAME,PROPERTY_NAME);
Set responsesWithParams=controller.getStackConfigurations(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackConfigurationResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getPropertyName(),PROPERTY_NAME);
}
StackConfigurationRequest invalidRequest=new StackConfigurationRequest(STACK_NAME,STACK_VERSION,SERVICE_NAME,NON_EXT_VALUE);
try {
controller.getStackConfigurations(Collections.singleton(invalidRequest));
}
catch ( StackAccessException e) {
}
}
InternalCallVerifier BooleanVerifier
@Test public void testIsAttributeMapsEqual(){
AmbariManagementControllerImpl controllerImpl=null;
if (controller instanceof AmbariManagementControllerImpl) {
controllerImpl=(AmbariManagementControllerImpl)controller;
}
Map> requestConfigAttributes=new HashMap>();
Map> clusterConfigAttributes=new HashMap>();
Assert.assertTrue(controllerImpl.isAttributeMapsEqual(requestConfigAttributes,clusterConfigAttributes));
requestConfigAttributes.put("final",new HashMap());
requestConfigAttributes.get("final").put("c","true");
clusterConfigAttributes.put("final",new HashMap());
clusterConfigAttributes.get("final").put("c","true");
Assert.assertTrue(controllerImpl.isAttributeMapsEqual(requestConfigAttributes,clusterConfigAttributes));
clusterConfigAttributes.put("final2",new HashMap());
clusterConfigAttributes.get("final2").put("a","true");
Assert.assertFalse(controllerImpl.isAttributeMapsEqual(requestConfigAttributes,clusterConfigAttributes));
requestConfigAttributes.put("final2",new HashMap());
requestConfigAttributes.get("final2").put("a","false");
Assert.assertFalse(controllerImpl.isAttributeMapsEqual(requestConfigAttributes,clusterConfigAttributes));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetClustersWithFilters() throws AmbariException, AuthorizationException {
clusters.addCluster("c1",new StackId("HDP-0.1"));
clusters.addCluster("c2",new StackId("HDP-0.1"));
clusters.addCluster("c3",new StackId("HDP-1.2.0"));
clusters.addCluster("c4",new StackId("HDP-0.1"));
Cluster c1=clusters.getCluster("c1");
Cluster c2=clusters.getCluster("c2");
Cluster c3=clusters.getCluster("c3");
Cluster c4=clusters.getCluster("c4");
ClusterRequest r=new ClusterRequest(null,null,null,null);
Set resp=controller.getClusters(Collections.singleton(r));
Assert.assertEquals(4,resp.size());
r=new ClusterRequest(null,"c1",null,null);
resp=controller.getClusters(Collections.singleton(r));
Assert.assertEquals(1,resp.size());
Assert.assertEquals(c1.getClusterId(),resp.iterator().next().getClusterId().longValue());
r=new ClusterRequest(null,null,"HDP-0.1",null);
resp=controller.getClusters(Collections.singleton(r));
Assert.assertEquals(3,resp.size());
r=new ClusterRequest(null,null,"",null);
resp=controller.getClusters(Collections.singleton(r));
Assert.assertEquals(0,resp.size());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testGetServicesWithFilters() throws AmbariException {
clusters.addCluster("c1",new StackId("HDP-0.2"));
clusters.addCluster("c2",new StackId("HDP-0.2"));
Cluster c1=clusters.getCluster("c1");
Cluster c2=clusters.getCluster("c2");
c1.setDesiredStackVersion(new StackId("HDP-0.2"));
c2.setDesiredStackVersion(new StackId("HDP-0.2"));
Service s1=serviceFactory.createNew(c1,"HDFS");
Service s2=serviceFactory.createNew(c1,"MAPREDUCE");
Service s3=serviceFactory.createNew(c1,"HBASE");
Service s4=serviceFactory.createNew(c2,"HIVE");
Service s5=serviceFactory.createNew(c2,"ZOOKEEPER");
c1.addService(s1);
c1.addService(s2);
c1.addService(s3);
c2.addService(s4);
c2.addService(s5);
s1.setDesiredState(State.INSTALLED);
s2.setDesiredState(State.INSTALLED);
s4.setDesiredState(State.INSTALLED);
s1.persist();
s2.persist();
s3.persist();
s4.persist();
s5.persist();
ServiceRequest r=new ServiceRequest(null,null,null);
Set resp;
try {
ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
fail("Expected failure for invalid request");
}
catch ( Exception e) {
}
r=new ServiceRequest(c1.getClusterName(),null,null);
resp=ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
Assert.assertEquals(3,resp.size());
r=new ServiceRequest(c1.getClusterName(),s2.getName(),null);
resp=ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
Assert.assertEquals(1,resp.size());
Assert.assertEquals(s2.getName(),resp.iterator().next().getServiceName());
try {
r=new ServiceRequest(c2.getClusterName(),s1.getName(),null);
ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
fail("Expected failure for invalid service");
}
catch ( Exception e) {
}
r=new ServiceRequest(c1.getClusterName(),null,"INSTALLED");
resp=ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
Assert.assertEquals(2,resp.size());
r=new ServiceRequest(c2.getClusterName(),null,"INIT");
resp=ServiceResourceProviderTest.getServices(controller,Collections.singleton(r));
Assert.assertEquals(1,resp.size());
ServiceRequest r1, r2, r3;
r1=new ServiceRequest(c1.getClusterName(),null,"INSTALLED");
r2=new ServiceRequest(c2.getClusterName(),null,"INIT");
r3=new ServiceRequest(c2.getClusterName(),null,"INIT");
Set reqs=new HashSet();
reqs.addAll(Arrays.asList(r1,r2,r3));
resp=ServiceResourceProviderTest.getServices(controller,reqs);
Assert.assertEquals(3,resp.size());
}
Class: org.apache.ambari.server.controller.AmbariServerTest InternalCallVerifier EqualityVerifier
/**
* Tests that Jetty pools are configured with the correct number of
* Acceptor/Selector threads.
* @throws Exception
*/
@Test public void testJettyThreadPoolCalculation() throws Exception {
Server server=new Server();
AmbariServer ambariServer=new AmbariServer();
ambariServer.configureJettyThreadPool(server,12,"mock-pool",25);
Assert.assertEquals(44,((QueuedThreadPool)server.getThreadPool()).getMaxThreads());
ambariServer.configureJettyThreadPool(server,2,"mock-pool",25);
Assert.assertEquals(25,((QueuedThreadPool)server.getThreadPool()).getMaxThreads());
ambariServer.configureJettyThreadPool(server,16,"mock-pool",35);
Assert.assertEquals(52,((QueuedThreadPool)server.getThreadPool()).getMaxThreads());
}
Class: org.apache.ambari.server.controller.AmbariSessionManagerTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetCurrentSessionId() throws Exception {
HttpSession session=createNiceMock(HttpSession.class);
AmbariSessionManager sessionManager=createMockBuilder(AmbariSessionManager.class).addMockedMethod("getHttpSession").createMock();
expect(sessionManager.getHttpSession()).andReturn(session);
expect(sessionManager.getHttpSession()).andReturn(null);
expect(session.getId()).andReturn("SESSION_ID").anyTimes();
replay(session,sessionManager);
assertEquals("SESSION_ID",sessionManager.getCurrentSessionId());
assertNull(sessionManager.getCurrentSessionId());
verify(session,sessionManager);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAttribute() throws Exception {
HttpSession session=createNiceMock(HttpSession.class);
AmbariSessionManager sessionManager=createMockBuilder(AmbariSessionManager.class).addMockedMethod("getHttpSession").createMock();
expect(sessionManager.getHttpSession()).andReturn(session);
expect(session.getAttribute("foo")).andReturn("bar");
replay(session,sessionManager);
assertEquals("bar",sessionManager.getAttribute("foo"));
verify(session,sessionManager);
}
Class: org.apache.ambari.server.controller.AuthToLocalBuilderTest InternalCallVerifier EqualityVerifier
@Test public void testExistingRuleWithNoRealm2(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRules("RULE:[1:$1/$2](foobar/someHost)s/.*/hdfs/");
assertEquals("RULE:[1:$1/$2](foobar/someHost)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testRuleGeneration(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
builder.addRule("foobar@EXAMPLE.COM","hdfs");
assertEquals("RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExistingWildcardRealm(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRules("RULE:[2:$1@$0]([rn]m@.*)s/.*/yarn/\n" + "RULE:[2:$1@$0]([nd]n@.*)s/.*/hdfs/\n" + "RULE:[2:$1@$0](.*@EXAMPLE.COM)s/.*/yarn/\n"+ "DEFAULT");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
assertEquals("RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](.*@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0]([nd]n@.*)s/.*/hdfs/\n"+ "RULE:[2:$1@$0]([rn]m@.*)s/.*/yarn/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testRuleGeneration_caseInsensitiveSupport(){
AuthToLocalBuilder builder=new AuthToLocalBuilder(true,null);
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
builder.addRule("foobar@EXAMPLE.COM","hdfs");
assertEquals("RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*///L\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testRulesWithWhitespace(){
String rulesWithWhitespace="RULE: [1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[ 1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2: $1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0 ](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0] (jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM) s/.*/hdfs/\n";
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRules(rulesWithWhitespace);
assertEquals("RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testAdditionalRealms_Null(){
AuthToLocalBuilder builder=new AuthToLocalBuilder(false,null);
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
assertEquals("RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testAddNullExistingRule(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRules(null);
assertEquals("RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testRuleGeneration_ExistingRules_existingMoreSpecificRule(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRule("foobar@EXAMPLE.COM","hdfs");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
String existingRules=builder.generate("EXAMPLE.COM");
existingRules="RULE:[2:$1/$2@$0](dn/somehost.com@EXAMPLE.COM)s/.*/hdfs/\n" + existingRules;
existingRules+="\nRULE:[1:$1@$0](.*@OTHER_REALM.COM)s/@.*//";
builder=new AuthToLocalBuilder();
builder.addRules(existingRules);
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
assertEquals("RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[1:$1@$0](.*@OTHER_REALM.COM)s/@.*//\n"+ "RULE:[2:$1/$2@$0](dn/somehost.com@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testAdditionalRealms_Empty(){
AuthToLocalBuilder builder=new AuthToLocalBuilder(false,"");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
assertEquals("RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testExistingRuleWithNoRealm(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRules("RULE:[1:$1](foobar)s/.*/hdfs/");
assertEquals("RULE:[1:$1](foobar)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier BooleanVerifier
@Test public void testAdditionalRealms(){
AuthToLocalBuilder builder=new AuthToLocalBuilder(false,"REALM2,REALM3, REALM1 ");
builder.addRules("RULE:[1:$1@$0](.*@FOOBAR.COM)s/@.*//\n" + "DEFAULT");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
List rules=Arrays.asList(new String[]{"RULE:[1:$1@$0](.*@FOOBAR.COM)s/@.*//","RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//","RULE:[1:$1@$0](.*@REALM2)s/@.*//","RULE:[1:$1@$0](.*@REALM1)s/@.*//","RULE:[1:$1@$0](.*@REALM3)s/@.*//","RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/","RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/","RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/","RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/","RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/","RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/","RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/","DEFAULT"});
assertTrue(CollectionPresentationUtils.isStringPermutationOfCollection(builder.generate("EXAMPLE.COM"),rules,"\n",0,0));
}
InternalCallVerifier EqualityVerifier
@Test public void testRuleGeneration_ExistingRules(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRule("foobar@EXAMPLE.COM","hdfs");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
String existingRules=builder.generate("EXAMPLE.COM");
builder=new AuthToLocalBuilder();
builder.addRules(existingRules);
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
assertEquals("RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](nn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](rm@EXAMPLE.COM)s/.*/yarn/\n"+ "RULE:[2:$1@$0](rs@EXAMPLE.COM)s/.*/hbase/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testRuleRegexWithDifferentEnding(){
String rules="RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\\\\\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\ntext\\\\" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\\\\\\"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\\/\\";
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRules(rules);
assertEquals("RULE:[1:$1@$0](foobar@EXAMPLE.COM)s/.*/hdfs/\n" + "RULE:[1:$1@$0](.*@EXAMPLE.COM)s/@.*//\n" + "RULE:[2:$1@$0](dn@EXAMPLE.COM)s/.*/hdfs/\n"+ "RULE:[2:$1@$0](hm@EXAMPLE.COM)s/.*/hbase/\n"+ "RULE:[2:$1@$0](jhs@EXAMPLE.COM)s/.*/mapred/\n"+ "RULE:[2:$1@$0](jn@EXAMPLE.COM)s/.*/hdfs/\n"+ "DEFAULT",builder.generate("EXAMPLE.COM"));
}
InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testCopy(){
AuthToLocalBuilder builder=new AuthToLocalBuilder();
builder.addRule("nn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("dn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("jn/_HOST@EXAMPLE.COM","hdfs");
builder.addRule("rm/_HOST@EXAMPLE.COM","yarn");
builder.addRule("jhs/_HOST@EXAMPLE.COM","mapred");
builder.addRule("hm/_HOST@EXAMPLE.COM","hbase");
builder.addRule("rs/_HOST@EXAMPLE.COM","hbase");
builder.addRule("foobar@EXAMPLE.COM","hdfs");
AuthToLocalBuilder copy=builder.copy();
assertNotSame(builder,copy);
assertEquals(copy.generate("EXAMPLE.COM"),builder.generate("EXAMPLE.COM"));
}
Class: org.apache.ambari.server.controller.BackgroundCustomCommandExecutionTest APIUtilityVerifier TestInitializer InternalCallVerifier EqualityVerifier HybridVerifier
@Before public void setup() throws Exception {
Configuration configuration;
TopologyManager topologyManager;
InMemoryDefaultTestModule module=new InMemoryDefaultTestModule(){
@Override protected void configure(){
getProperties().put(Configuration.CUSTOM_ACTION_DEFINITION_KEY,"src/main/resources/custom_action_definitions");
super.configure();
bind(ActionManager.class).toInstance(am);
}
}
;
injector=Guice.createInjector(module);
injector.getInstance(GuiceJpaInitializer.class);
controller=injector.getInstance(AmbariManagementController.class);
clusters=injector.getInstance(Clusters.class);
configuration=injector.getInstance(Configuration.class);
topologyManager=injector.getInstance(TopologyManager.class);
Assert.assertEquals("src/main/resources/custom_action_definitions",configuration.getCustomActionDefinitionPath());
StageUtils.setTopologyManager(topologyManager);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@SuppressWarnings("serial") @Test public void testRebalanceHdfsCustomCommand(){
try {
createClusterFixture();
Map requestProperties=new HashMap(){
{
put(REQUEST_CONTEXT_PROPERTY,"Refresh YARN Capacity Scheduler");
put("command","REBALANCEHDFS");
put("namenode","{\"threshold\":13}");
}
}
;
ExecuteActionRequest actionRequest=new ExecuteActionRequest("c1","REBALANCEHDFS",new HashMap(),false);
actionRequest.getResourceFilters().add(new RequestResourceFilter("HDFS","NAMENODE",Collections.singletonList("c6401")));
controller.createAction(actionRequest,requestProperties);
Mockito.verify(am,Mockito.times(1)).sendActions(requestCapture.capture(),any(ExecuteActionRequest.class));
Request request=requestCapture.getValue();
Assert.assertNotNull(request);
Assert.assertNotNull(request.getStages());
Assert.assertEquals(1,request.getStages().size());
Stage stage=request.getStages().iterator().next();
System.out.println(stage);
Assert.assertEquals(1,stage.getHosts().size());
List commands=stage.getExecutionCommands("c6401");
Assert.assertEquals(1,commands.size());
ExecutionCommand command=commands.get(0).getExecutionCommand();
Assert.assertEquals(AgentCommandType.BACKGROUND_EXECUTION_COMMAND,command.getCommandType());
Assert.assertEquals("{\"threshold\":13}",command.getCommandParams().get("namenode"));
}
catch ( Exception e) {
Assert.fail(e.getMessage());
}
}
Class: org.apache.ambari.server.controller.ClusterRequestTest InternalCallVerifier EqualityVerifier
@Test public void testBasicGetAndSet(){
Long clusterId=new Long(10);
String clusterName="foo";
String provisioningState=State.INIT.name();
SecurityType securityType=SecurityType.NONE;
StackId stackVersion=new StackId("HDP-1.0.1");
Set hostNames=new HashSet();
hostNames.add("h1");
ClusterRequest r1=new ClusterRequest(clusterId,clusterName,provisioningState,securityType,stackVersion.getStackId(),hostNames);
Assert.assertEquals(clusterId,r1.getClusterId());
Assert.assertEquals(clusterName,r1.getClusterName());
Assert.assertEquals(provisioningState,r1.getProvisioningState());
Assert.assertEquals(securityType,r1.getSecurityType());
Assert.assertEquals(stackVersion.getStackId(),r1.getStackVersion());
Assert.assertArrayEquals(hostNames.toArray(),r1.getHostNames().toArray());
r1.setClusterId(++clusterId);
r1.setHostNames(hostNames);
r1.setClusterName("foo1");
r1.setStackVersion("HDP-1.2.0");
r1.setProvisioningState(State.INSTALLED.name());
r1.setSecurityType(SecurityType.KERBEROS);
hostNames.add("h2");
Assert.assertEquals(clusterId,r1.getClusterId());
Assert.assertEquals("foo1",r1.getClusterName());
Assert.assertEquals(State.INSTALLED.name(),r1.getProvisioningState());
Assert.assertEquals(SecurityType.KERBEROS,r1.getSecurityType());
Assert.assertEquals("HDP-1.2.0",r1.getStackVersion());
Assert.assertArrayEquals(hostNames.toArray(),r1.getHostNames().toArray());
}
Class: org.apache.ambari.server.controller.ClusterResponseTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testBasicGetAndSet(){
Long clusterId=new Long(10);
String clusterName="foo";
State provisioningState=State.INSTALLED;
SecurityType securityType=SecurityType.KERBEROS;
Set hostNames=new HashSet();
hostNames.add("h1");
ClusterResponse r1=new ClusterResponse(clusterId,clusterName,provisioningState,securityType,hostNames,hostNames.size(),"bar",null);
Assert.assertEquals(clusterId,r1.getClusterId());
Assert.assertEquals(clusterName,r1.getClusterName());
Assert.assertEquals(provisioningState.name(),r1.getProvisioningState());
Assert.assertEquals(securityType.name(),r1.getSecurityType());
Assert.assertArrayEquals(hostNames.toArray(),r1.getHostNames().toArray());
Assert.assertEquals(Integer.valueOf(1),r1.getTotalHosts());
Assert.assertEquals("bar",r1.getDesiredStackVersion());
}
Class: org.apache.ambari.server.controller.KerberosHelperTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testEnsureHeadlessIdentities() throws Exception {
Map propertiesKrb5Conf=new HashMap();
Map propertiesKerberosEnv=new HashMap();
propertiesKerberosEnv.put("realm","EXAMPLE.COM");
propertiesKerberosEnv.put("kdc_type","mit-kdc");
propertiesKerberosEnv.put("password_length","20");
propertiesKerberosEnv.put("password_min_lowercase_letters","1");
propertiesKerberosEnv.put("password_min_uppercase_letters","1");
propertiesKerberosEnv.put("password_min_digits","1");
propertiesKerberosEnv.put("password_min_punctuation","0");
propertiesKerberosEnv.put("password_min_whitespace","0");
Config configKrb5Conf=createMock(Config.class);
expect(configKrb5Conf.getProperties()).andReturn(propertiesKrb5Conf).times(1);
Config configKerberosEnv=createMock(Config.class);
expect(configKerberosEnv.getProperties()).andReturn(propertiesKerberosEnv).times(1);
Host host1=createMockHost("host1");
Host host2=createMockHost("host3");
Host host3=createMockHost("host2");
Map service1Component1HostMap=new HashMap();
service1Component1HostMap.put("host1",createMockServiceComponentHost());
Map service2Component1HostMap=new HashMap();
service2Component1HostMap.put("host2",createMockServiceComponentHost());
Map service1ComponentMap=new HashMap();
service1ComponentMap.put("COMPONENT11",createMockComponent("COMPONENT11",true,service1Component1HostMap));
Map service2ComponentMap=new HashMap();
service2ComponentMap.put("COMPONENT21",createMockComponent("COMPONENT21",true,service2Component1HostMap));
Service service1=createMockService("SERVICE1",service1ComponentMap);
Service service2=createMockService("SERVICE2",service2ComponentMap);
Map servicesMap=new HashMap();
servicesMap.put("SERVICE1",service1);
servicesMap.put("SERVICE2",service2);
Cluster cluster=createMock(Cluster.class);
expect(cluster.getDesiredConfigByType("krb5-conf")).andReturn(configKrb5Conf).times(1);
expect(cluster.getDesiredConfigByType("kerberos-env")).andReturn(configKerberosEnv).times(1);
expect(cluster.getSecurityType()).andReturn(SecurityType.KERBEROS).times(1);
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.2")).times(1);
expect(cluster.getClusterName()).andReturn("c1").times(4);
expect(cluster.getHosts()).andReturn(Arrays.asList(host1,host2,host3)).times(1);
expect(cluster.getServices()).andReturn(servicesMap).times(1);
Map kerberosDescriptorProperties=new HashMap();
kerberosDescriptorProperties.put("additional_realms","");
kerberosDescriptorProperties.put("keytab_dir","/etc/security/keytabs");
kerberosDescriptorProperties.put("realm","${kerberos-env/realm}");
ArrayList service1Component1Identities=new ArrayList();
service1Component1Identities.add(createMockIdentityDescriptor("s1c1_1.user",createMockPrincipalDescriptor("s1c1_1@${realm}",KerberosPrincipalType.USER,"s1c1",null),createMockKeytabDescriptor("s1c1_1.user.keytab",null)));
service1Component1Identities.add(createMockIdentityDescriptor("s1c1_1.service",createMockPrincipalDescriptor("s1c1_1/_HOST@${realm}",KerberosPrincipalType.SERVICE,"s1c1",null),createMockKeytabDescriptor("s1c1_1.service.keytab",null)));
HashMap service1ComponentDescriptorMap=new HashMap();
service1ComponentDescriptorMap.put("COMPONENT11",createMockComponentDescriptor("COMPONENT11",service1Component1Identities,null));
List service1Identities=new ArrayList();
service1Identities.add(createMockIdentityDescriptor("s1_1.user",createMockPrincipalDescriptor("s1_1@${realm}",KerberosPrincipalType.USER,"s1",null),createMockKeytabDescriptor("s1_1.user.keytab",null)));
service1Identities.add(createMockIdentityDescriptor("s1_1.service",createMockPrincipalDescriptor("s1/_HOST@${realm}",KerberosPrincipalType.SERVICE,"s1",null),createMockKeytabDescriptor("s1.service.keytab",null)));
KerberosServiceDescriptor service1KerberosDescriptor=createMockServiceDescriptor("SERVICE1",service1ComponentDescriptorMap,service1Identities);
ArrayList service2Component1Identities=new ArrayList();
service2Component1Identities.add(createMockIdentityDescriptor("s2_1.user",createMockPrincipalDescriptor("s2_1@${realm}",KerberosPrincipalType.USER,"s2",null),createMockKeytabDescriptor("s2_1.user.keytab",null)));
service2Component1Identities.add(createMockIdentityDescriptor("s2c1_1.service",createMockPrincipalDescriptor("s2c1_1/_HOST@${realm}",KerberosPrincipalType.SERVICE,"s2c1",null),createMockKeytabDescriptor("s2c1_1.service.keytab",null)));
HashMap service2ComponentDescriptorMap=new HashMap();
service2ComponentDescriptorMap.put("COMPONENT21",createMockComponentDescriptor("COMPONENT21",service2Component1Identities,null));
KerberosServiceDescriptor service2KerberosDescriptor=createMockServiceDescriptor("SERVICE2",service2ComponentDescriptorMap,null);
KerberosDescriptor kerberosDescriptor=createMock(KerberosDescriptor.class);
expect(kerberosDescriptor.getProperties()).andReturn(kerberosDescriptorProperties);
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(service1KerberosDescriptor).times(1);
expect(kerberosDescriptor.getService("SERVICE2")).andReturn(service2KerberosDescriptor).times(1);
setupGetDescriptorFromStack(kerberosDescriptor);
Map> existingConfigurations=new HashMap>();
existingConfigurations.put("kerberos-env",propertiesKerberosEnv);
Set services=new HashSet(){
{
add("SERVICE1");
add("SERVICE2");
}
}
;
Capture extends String> capturePrincipal=newCapture(CaptureType.ALL);
Capture extends String> capturePrincipalForKeytab=newCapture(CaptureType.ALL);
CreatePrincipalsServerAction createPrincipalsServerAction=injector.getInstance(CreatePrincipalsServerAction.class);
expect(createPrincipalsServerAction.createPrincipal(capture(capturePrincipal),eq(false),anyObject(Map.class),anyObject(KerberosOperationHandler.class),isNull(ActionLog.class))).andReturn(new CreatePrincipalsServerAction.CreatePrincipalResult("anything","password",1)).times(3);
CreateKeytabFilesServerAction createKeytabFilesServerAction=injector.getInstance(CreateKeytabFilesServerAction.class);
expect(createKeytabFilesServerAction.createKeytab(capture(capturePrincipalForKeytab),eq("password"),eq(1),anyObject(KerberosOperationHandler.class),eq(true),eq(true),isNull(ActionLog.class))).andReturn(new Keytab()).times(3);
replayAll();
AmbariMetaInfo ambariMetaInfo=injector.getInstance(AmbariMetaInfo.class);
ambariMetaInfo.init();
CredentialStoreService credentialStoreService=injector.getInstance(CredentialStoreService.class);
credentialStoreService.setCredential(cluster.getClusterName(),KerberosHelper.KDC_ADMINISTRATOR_CREDENTIAL_ALIAS,new PrincipalKeyCredential("principal","password"),CredentialStoreType.TEMPORARY);
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
kerberosHelper.ensureHeadlessIdentities(cluster,existingConfigurations,services);
verifyAll();
List extends String> capturedPrincipals=capturePrincipal.getValues();
assertEquals(3,capturedPrincipals.size());
assertTrue(capturedPrincipals.contains("s1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipals.contains("s1c1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipals.contains("s2_1@EXAMPLE.COM"));
List extends String> capturedPrincipalsForKeytab=capturePrincipalForKeytab.getValues();
assertEquals(3,capturedPrincipalsForKeytab.size());
assertTrue(capturedPrincipalsForKeytab.contains("s1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipalsForKeytab.contains("s1c1_1@EXAMPLE.COM"));
assertTrue(capturedPrincipalsForKeytab.contains("s2_1@EXAMPLE.COM"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetManageIdentitiesDirective_NotSet() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
assertEquals(null,kerberosHelper.getManageIdentitiesDirective(null));
assertEquals(null,kerberosHelper.getManageIdentitiesDirective(Collections.emptyMap()));
assertEquals(null,kerberosHelper.getManageIdentitiesDirective(new HashMap(){
{
put(KerberosHelper.DIRECTIVE_MANAGE_KERBEROS_IDENTITIES,null);
put("some_directive_0","false");
put("some_directive_1",null);
}
}
));
assertEquals(null,kerberosHelper.getManageIdentitiesDirective(new HashMap(){
{
put("some_directive_0","false");
put("some_directive_1",null);
}
}
));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetManageIdentitiesDirective_True() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
assertEquals(Boolean.TRUE,kerberosHelper.getManageIdentitiesDirective(Collections.singletonMap(KerberosHelper.DIRECTIVE_MANAGE_KERBEROS_IDENTITIES,"true")));
assertEquals(Boolean.TRUE,kerberosHelper.getManageIdentitiesDirective(Collections.singletonMap(KerberosHelper.DIRECTIVE_MANAGE_KERBEROS_IDENTITIES,"not_false")));
assertEquals(Boolean.TRUE,kerberosHelper.getManageIdentitiesDirective(new HashMap(){
{
put(KerberosHelper.DIRECTIVE_MANAGE_KERBEROS_IDENTITIES,"true");
put("some_directive_0","false");
put("some_directive_1",null);
}
}
));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetServiceConfigurationUpdates() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
final Host hostA=createMockHost("hostA");
final Host hostB=createMockHost("hostB");
final Host hostC=createMockHost("hostC");
Collection hosts=Arrays.asList(hostA,hostB,hostC);
final Map kerberosEnvProperties=new HashMap(){
{
put("kdc_type","mit-kdc");
put("realm","FOOBAR.COM");
put("case_insensitive_username_rules","false");
}
}
;
final Config kerberosEnvConfig=createMock(Config.class);
expect(kerberosEnvConfig.getProperties()).andReturn(kerberosEnvProperties).atLeastOnce();
final Map krb5ConfProperties=createMock(Map.class);
final Config krb5ConfConfig=createMock(Config.class);
expect(krb5ConfConfig.getProperties()).andReturn(krb5ConfProperties).atLeastOnce();
final KerberosPrincipalDescriptor principalDescriptor1=createMockPrincipalDescriptor("service1/_HOST@${realm}",KerberosPrincipalType.SERVICE,"service1user","service1-site/service.kerberos.principal");
final KerberosPrincipalDescriptor principalDescriptor1a=createMockPrincipalDescriptor("component1a/_HOST@${realm}",KerberosPrincipalType.SERVICE,"service1user","service1-site/component1a.kerberos.principal");
final KerberosPrincipalDescriptor principalDescriptor1b=createMockPrincipalDescriptor("component1b/_HOST@${realm}",KerberosPrincipalType.SERVICE,"service1user","service1-site/component1b.kerberos.principal");
final KerberosPrincipalDescriptor principalDescriptor2a=createMockPrincipalDescriptor("component2a/_HOST@${realm}",KerberosPrincipalType.SERVICE,"service2user","service2-site/component2a.kerberos.principal");
final KerberosPrincipalDescriptor principalDescriptor2b=createMockPrincipalDescriptor("component2b/_HOST@${realm}",KerberosPrincipalType.SERVICE,"service2user","service2-site/component2b.kerberos.principal");
final KerberosPrincipalDescriptor principalDescriptor3a=createMockPrincipalDescriptor("component3a/_HOST@${realm}",KerberosPrincipalType.SERVICE,"service3user","service3-site/component3a.kerberos.principal");
final KerberosKeytabDescriptor keytabDescriptor1=createMockKeytabDescriptor("keytab1","service1-site/service.kerberos.keytab");
final KerberosKeytabDescriptor keytabDescriptor1a=createMockKeytabDescriptor("keytab1a","service1-site/component1a.kerberos.keytab");
final KerberosKeytabDescriptor keytabDescriptor1b=createMockKeytabDescriptor("keytab1b","service1-site/component1b.kerberos.keytab");
final KerberosKeytabDescriptor keytabDescriptor2a=createMockKeytabDescriptor("keytab2a","service2-site/component2a.kerberos.keytab");
final KerberosKeytabDescriptor keytabDescriptor2b=createMockKeytabDescriptor("keytab2b","service2-site/component2b.kerberos.keytab");
final KerberosKeytabDescriptor keytabDescriptor3a=createMockKeytabDescriptor("keytab3a","service3-site/component3a.kerberos.keytab");
final KerberosIdentityDescriptor identityDescriptor1=createMockIdentityDescriptor("identity1",principalDescriptor1,keytabDescriptor1);
final KerberosIdentityDescriptor identityDescriptor1a=createMockIdentityDescriptor("identity1a",principalDescriptor1a,keytabDescriptor1a);
final KerberosIdentityDescriptor identityDescriptor1b=createMockIdentityDescriptor("identity1b",principalDescriptor1b,keytabDescriptor1b);
final KerberosIdentityDescriptor identityDescriptor2a=createMockIdentityDescriptor("identity2a",principalDescriptor2a,keytabDescriptor2a);
final KerberosIdentityDescriptor identityDescriptor2b=createMockIdentityDescriptor("identity2b",principalDescriptor2b,keytabDescriptor2b);
final KerberosIdentityDescriptor identityDescriptor3a=createMockIdentityDescriptor("identity3a",principalDescriptor3a,keytabDescriptor3a);
final KerberosComponentDescriptor componentDescriptor1a=createMockComponentDescriptor("COMPONENT1A",new ArrayList(){
{
add(identityDescriptor1a);
}
}
,new HashMap(){
{
put("service1-site",createMockConfigurationDescriptor(Collections.singletonMap("component1a.property","${replacement1}")));
}
}
);
final KerberosComponentDescriptor componentDescriptor1b=createMockComponentDescriptor("COMPONENT1B",new ArrayList(){
{
add(identityDescriptor1b);
}
}
,new HashMap(){
{
put("service1-site",createMockConfigurationDescriptor(Collections.singletonMap("component1b.property","${type1/replacement1}")));
}
}
);
final KerberosComponentDescriptor componentDescriptor2a=createMockComponentDescriptor("COMPONENT2A",new ArrayList(){
{
add(identityDescriptor2a);
}
}
,new HashMap(){
{
put("service2-site",createMockConfigurationDescriptor(Collections.singletonMap("component2a.property","${type1/replacement2}")));
}
}
);
final KerberosComponentDescriptor componentDescriptor2b=createMockComponentDescriptor("COMPONENT2B",new ArrayList(){
{
add(identityDescriptor2b);
}
}
,new HashMap(){
{
put("service2-site",createMockConfigurationDescriptor(Collections.singletonMap("component2b.property","${type2/replacement1}")));
}
}
);
final KerberosComponentDescriptor componentDescriptor3a=createMockComponentDescriptor("COMPONENT3A",new ArrayList(){
{
add(identityDescriptor3a);
}
}
,new HashMap(){
{
put("service3-site",createMockConfigurationDescriptor(Collections.singletonMap("component3a.property","${type3/replacement1}")));
put("core-site",createMockConfigurationDescriptor(Collections.singletonMap("component3b.property","${type3/replacement2}")));
}
}
);
final KerberosServiceDescriptor serviceDescriptor1=createMockServiceDescriptor("SERVICE1",new HashMap(){
{
put("COMPONENT1A",componentDescriptor1a);
put("COMPONENT1B",componentDescriptor1b);
}
}
,new ArrayList(){
{
add(identityDescriptor1);
}
}
);
final KerberosServiceDescriptor serviceDescriptor2=createMockServiceDescriptor("SERVICE2",new HashMap(){
{
put("COMPONENT2A",componentDescriptor2a);
put("COMPONENT2B",componentDescriptor2b);
}
}
,Collections.emptyList());
final KerberosServiceDescriptor serviceDescriptor3=createMockServiceDescriptor("SERVICE3",new HashMap(){
{
put("COMPONENT3A",componentDescriptor3a);
}
}
,Collections.emptyList());
final Map kerberosDescriptorProperties=new HashMap();
kerberosDescriptorProperties.put("realm","${kerberos-env/realm}");
final KerberosDescriptor kerberosDescriptor=createMock(KerberosDescriptor.class);
expect(kerberosDescriptor.getProperties()).andReturn(kerberosDescriptorProperties).atLeastOnce();
expect(kerberosDescriptor.getServices()).andReturn(new HashMap(){
{
put("SERVICE1",serviceDescriptor1);
put("SERVICE2",serviceDescriptor2);
put("SERVICE3",serviceDescriptor3);
}
}
).atLeastOnce();
expect(kerberosDescriptor.getService("SERVICE1")).andReturn(serviceDescriptor1).atLeastOnce();
expect(kerberosDescriptor.getService("SERVICE2")).andReturn(serviceDescriptor2).atLeastOnce();
expect(kerberosDescriptor.getService("SERVICE3")).andReturn(serviceDescriptor3).atLeastOnce();
expect(kerberosDescriptor.getProperty("additional_realms")).andReturn(null).atLeastOnce();
expect(kerberosDescriptor.getIdentities()).andReturn(null).atLeastOnce();
expect(kerberosDescriptor.getAuthToLocalProperties()).andReturn(Collections.singleton("core-site/auth.to.local")).atLeastOnce();
final ResourceProvider artifactResourceProvider=createMock(ArtifactResourceProvider.class);
expect(artifactResourceProvider.getResources(anyObject(Request.class),anyObject(Predicate.class))).andReturn(Collections.emptySet()).atLeastOnce();
expect(metaInfo.getKerberosDescriptor("HDP","2.2")).andReturn(kerberosDescriptor).atLeastOnce();
expect(clusterController.ensureResourceProvider(Resource.Type.Artifact)).andReturn(artifactResourceProvider).atLeastOnce();
RecommendationResponse.BlueprintConfigurations coreSiteRecommendation=createMock(RecommendationResponse.BlueprintConfigurations.class);
expect(coreSiteRecommendation.getProperties()).andReturn(Collections.singletonMap("newPropertyRecommendation","newPropertyRecommendation"));
RecommendationResponse.BlueprintConfigurations newTypeRecommendation=createMock(RecommendationResponse.BlueprintConfigurations.class);
expect(newTypeRecommendation.getProperties()).andReturn(Collections.singletonMap("newTypeRecommendation","newTypeRecommendation"));
RecommendationResponse.BlueprintConfigurations type1Recommendation=createMock(RecommendationResponse.BlueprintConfigurations.class);
expect(type1Recommendation.getProperties()).andReturn(Collections.singletonMap("replacement1","not replaced"));
RecommendationResponse.BlueprintConfigurations service1SiteRecommendation=createMock(RecommendationResponse.BlueprintConfigurations.class);
expect(service1SiteRecommendation.getProperties()).andReturn(Collections.singletonMap("component1b.property","replaced value"));
Map configurations=new HashMap();
configurations.put("core-site",coreSiteRecommendation);
configurations.put("new-type",newTypeRecommendation);
configurations.put("type1",type1Recommendation);
configurations.put("service1-site",service1SiteRecommendation);
RecommendationResponse.Blueprint blueprint=createMock(RecommendationResponse.Blueprint.class);
expect(blueprint.getConfigurations()).andReturn(configurations).once();
RecommendationResponse.Recommendation recommendations=createMock(RecommendationResponse.Recommendation.class);
expect(recommendations.getBlueprint()).andReturn(blueprint).once();
RecommendationResponse recommendationResponse=createMock(RecommendationResponse.class);
expect(recommendationResponse.getRecommendations()).andReturn(recommendations).once();
StackAdvisorHelper stackAdvisorHelper=injector.getInstance(StackAdvisorHelper.class);
expect(stackAdvisorHelper.recommend(anyObject(StackAdvisorRequest.class))).andReturn(null).once();
expect(stackAdvisorHelper.recommend(anyObject(StackAdvisorRequest.class))).andReturn(recommendationResponse).once();
final Service service1=createMockService("SERVICE1",new HashMap(){
{
put("COMPONENT1A",createMockComponent("COMPONENT1A",true,new HashMap(){
{
put("hostA",createMockServiceComponentHost());
}
}
));
put("COMPONENT1B",createMockComponent("COMPONENT1B",false,new HashMap(){
{
put("hostB",createMockServiceComponentHost());
put("hostC",createMockServiceComponentHost());
}
}
));
}
}
);
final Service service2=createMockService("SERVICE2",new HashMap(){
{
put("COMPONENT2A",createMockComponent("COMPONENT2A",true,new HashMap(){
{
put("hostA",createMockServiceComponentHost());
}
}
));
put("COMPONENT2B",createMockComponent("COMPONENT2B",false,new HashMap(){
{
put("hostB",createMockServiceComponentHost());
put("hostC",createMockServiceComponentHost());
}
}
));
}
}
);
final Service service3=createMockService("SERVICE3",new HashMap(){
{
put("COMPONENT3A",createMockComponent("COMPONENT3A",true,new HashMap(){
{
put("hostA",createMockServiceComponentHost());
}
}
));
}
}
);
final Cluster cluster=createMock(Cluster.class);
expect(cluster.getDesiredConfigByType("krb5-conf")).andReturn(krb5ConfConfig).atLeastOnce();
expect(cluster.getDesiredConfigByType("kerberos-env")).andReturn(kerberosEnvConfig).atLeastOnce();
expect(cluster.getSecurityType()).andReturn(SecurityType.KERBEROS).atLeastOnce();
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.2")).atLeastOnce();
expect(cluster.getClusterName()).andReturn("c1").atLeastOnce();
expect(cluster.getHosts()).andReturn(hosts).anyTimes();
expect(cluster.getServices()).andReturn(new HashMap(){
{
put("SERVICE1",service1);
put("SERVICE2",service2);
put("SERVICE3",service3);
}
}
).anyTimes();
expect(cluster.isBluePrintDeployed()).andReturn(false).atLeastOnce();
final Map> existingConfigurations=new HashMap>(){
{
put("kerberos-env",kerberosEnvProperties);
put("",new HashMap(){
{
put("replacement1","value1");
}
}
);
put("type1",new HashMap(){
{
put("replacement1","value2");
put("replacement2","value3");
}
}
);
put("type2",new HashMap(){
{
put("replacement1","value4");
put("replacement2","value5");
}
}
);
put("type3",new HashMap(){
{
put("replacement1","value6");
put("replacement2","value7");
}
}
);
}
}
;
replayAll();
injector.getInstance(AmbariMetaInfo.class).init();
Map> updates1=kerberosHelper.getServiceConfigurationUpdates(cluster,existingConfigurations,new HashSet(Arrays.asList("SERVICE1","SERVICE2","SERVICE3")),false,true,true);
Map> updates2=kerberosHelper.getServiceConfigurationUpdates(cluster,existingConfigurations,new HashSet(Arrays.asList("SERVICE1","SERVICE3")),false,true,true);
verifyAll();
Map> expectedUpdates=new HashMap>(){
{
put("service1-site",new HashMap(){
{
put("service.kerberos.principal","service1/_HOST@FOOBAR.COM");
put("service.kerberos.keytab","keytab1");
put("component1a.kerberos.principal","component1a/_HOST@FOOBAR.COM");
put("component1a.kerberos.keytab","keytab1a");
put("component1a.property","value1");
put("component1b.kerberos.principal","component1b/_HOST@FOOBAR.COM");
put("component1b.kerberos.keytab","keytab1b");
put("component1b.property","value2");
}
}
);
put("service2-site",new HashMap(){
{
put("component2a.kerberos.principal","component2a/_HOST@FOOBAR.COM");
put("component2a.kerberos.keytab","keytab2a");
put("component2a.property","value3");
put("component2b.kerberos.principal","component2b/_HOST@FOOBAR.COM");
put("component2b.kerberos.keytab","keytab2b");
put("component2b.property","value4");
}
}
);
put("service3-site",new HashMap(){
{
put("component3a.kerberos.principal","component3a/_HOST@FOOBAR.COM");
put("component3a.kerberos.keytab","keytab3a");
put("component3a.property","value6");
}
}
);
put("core-site",new HashMap(){
{
put("auth.to.local","RULE:[1:$1@$0](.*@FOOBAR.COM)s/@.*//\n" + "RULE:[2:$1@$0](component1a@FOOBAR.COM)s/.*/service1user/\n" + "RULE:[2:$1@$0](component1b@FOOBAR.COM)s/.*/service1user/\n"+ "RULE:[2:$1@$0](component2a@FOOBAR.COM)s/.*/service2user/\n"+ "RULE:[2:$1@$0](component2b@FOOBAR.COM)s/.*/service2user/\n"+ "RULE:[2:$1@$0](component3a@FOOBAR.COM)s/.*/service3user/\n"+ "RULE:[2:$1@$0](service1@FOOBAR.COM)s/.*/service1user/\n"+ "DEFAULT");
put("component3b.property","value7");
}
}
);
}
}
;
assertEquals(expectedUpdates,updates1);
expectedUpdates.remove("service2-site");
expectedUpdates.get("core-site").put("newPropertyRecommendation","newPropertyRecommendation");
expectedUpdates.get("service1-site").put("component1b.property","replaced value");
expectedUpdates.put("new-type",new HashMap(){
{
put("newTypeRecommendation","newTypeRecommendation");
}
}
);
assertEquals(expectedUpdates,updates2);
Map> expectedExistingConfigurations=new HashMap>(){
{
put("kerberos-env",new HashMap(){
{
put("kdc_type","mit-kdc");
put("realm","FOOBAR.COM");
put("case_insensitive_username_rules","false");
}
}
);
put("",new HashMap(){
{
put("replacement1","value1");
}
}
);
put("type1",new HashMap(){
{
put("replacement1","value2");
put("replacement2","value3");
}
}
);
put("type2",new HashMap(){
{
put("replacement1","value4");
put("replacement2","value5");
}
}
);
put("type3",new HashMap(){
{
put("replacement1","value6");
put("replacement2","value7");
}
}
);
}
}
;
assertEquals(expectedExistingConfigurations,existingConfigurations);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterKerberosEnabled_false() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
Cluster cluster=createStrictMock(Cluster.class);
expect(cluster.getSecurityType()).andReturn(SecurityType.NONE);
replay(cluster);
assertFalse(kerberosHelper.isClusterKerberosEnabled(cluster));
verify(cluster);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterKerberosEnabled_true() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
Cluster cluster=createStrictMock(Cluster.class);
expect(cluster.getSecurityType()).andReturn(SecurityType.KERBEROS);
replay(cluster);
assertTrue(kerberosHelper.isClusterKerberosEnabled(cluster));
verify(cluster);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetManageIdentitiesDirective_False() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
assertEquals(Boolean.FALSE,kerberosHelper.getManageIdentitiesDirective(Collections.singletonMap(KerberosHelper.DIRECTIVE_MANAGE_KERBEROS_IDENTITIES,"false")));
assertEquals(Boolean.FALSE,kerberosHelper.getManageIdentitiesDirective(new HashMap(){
{
put(KerberosHelper.DIRECTIVE_MANAGE_KERBEROS_IDENTITIES,"false");
put("some_directive_0","false");
put("some_directive_1",null);
}
}
));
}
Class: org.apache.ambari.server.controller.LdapSyncRequestTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAddPrincipalNames() throws Exception {
Set names=new HashSet();
names.add("name1");
LdapSyncRequest request=new LdapSyncRequest(LdapSyncSpecEntity.SyncType.SPECIFIC,names);
names=new HashSet();
names.add("name2");
names.add("name3");
request.addPrincipalNames(names);
Set principalNames=request.getPrincipalNames();
Assert.assertEquals(3,principalNames.size());
Assert.assertTrue(principalNames.contains("name1"));
Assert.assertTrue(principalNames.contains("name2"));
Assert.assertTrue(principalNames.contains("name3"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetPrincipalNames() throws Exception {
Set names=new HashSet();
names.add("name1");
names.add("name2");
names.add("name3");
LdapSyncRequest request=new LdapSyncRequest(LdapSyncSpecEntity.SyncType.SPECIFIC,names);
Set principalNames=request.getPrincipalNames();
Assert.assertEquals(3,principalNames.size());
Assert.assertTrue(principalNames.contains("name1"));
Assert.assertTrue(principalNames.contains("name2"));
Assert.assertTrue(principalNames.contains("name3"));
}
Class: org.apache.ambari.server.controller.MaintenanceStateHelperTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testHostComponentOperationsAllowance() throws Exception {
Injector injector=createStrictMock(Injector.class);
Method getEffectiveState=MaintenanceStateHelper.class.getMethod("getEffectiveState",new Class[]{ServiceComponentHost.class});
MaintenanceStateHelper maintenanceStateHelper=createMockBuilder(MaintenanceStateHelper.class).withConstructor(injector).addMockedMethod(getEffectiveState).createNiceMock();
ServiceComponentHost sch=createMock(ServiceComponentHost.class);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.ON);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE_AND_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.OFF);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.ON);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE_AND_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.OFF);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.ON);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE_AND_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.OFF);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.ON);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.IMPLIED_FROM_SERVICE_AND_HOST);
expect(maintenanceStateHelper.getEffectiveState(anyObject(ServiceComponentHost.class))).andReturn(MaintenanceState.OFF);
replay(maintenanceStateHelper,sch);
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,sch));
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,sch));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,sch));
verify(maintenanceStateHelper,sch);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCutOffHosts() throws AmbariException {
MaintenanceStateHelper.HostPredicate predicate=createMock(MaintenanceStateHelper.HostPredicate.class);
expect(predicate.shouldHostBeRemoved(eq("host1"))).andReturn(true);
expect(predicate.shouldHostBeRemoved(eq("host2"))).andReturn(false);
expect(predicate.shouldHostBeRemoved(eq("host3"))).andReturn(true);
expect(predicate.shouldHostBeRemoved(eq("host4"))).andReturn(false);
Set candidates=new HashSet();
candidates.add("host1");
candidates.add("host2");
candidates.add("host3");
candidates.add("host4");
Injector injector=createStrictMock(Injector.class);
MaintenanceStateHelper maintenanceStateHelper=createMockBuilder(MaintenanceStateHelper.class).withConstructor(injector).createNiceMock();
replay(predicate,maintenanceStateHelper);
Set ignored=maintenanceStateHelper.filterHostsInMaintenanceState(candidates,predicate);
verify(predicate,maintenanceStateHelper);
Assert.assertEquals(candidates.size(),2);
Assert.assertTrue(candidates.contains("host2"));
Assert.assertTrue(candidates.contains("host4"));
Assert.assertEquals(ignored.size(),2);
Assert.assertTrue(ignored.contains("host1"));
Assert.assertTrue(ignored.contains("host3"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testHostComponentImpliedState() throws Exception {
Injector injector=createStrictMock(Injector.class);
MaintenanceStateHelper maintenanceStateHelper=createMockBuilder(MaintenanceStateHelper.class).withConstructor(injector).createNiceMock();
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
ServiceComponentHost sch=createMock(ServiceComponentHost.class);
Service service=createNiceMock(Service.class);
final Host host=createNiceMock(Host.class);
expect(sch.getClusterName()).andReturn("c1").anyTimes();
expect(clusters.getCluster("c1")).andReturn(cluster).anyTimes();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
expect(cluster.getClusterId()).andReturn(1L).anyTimes();
expect(clusters.getHost("h1")).andReturn(host).anyTimes();
expect(sch.getHostName()).andReturn("h1").anyTimes();
expect(sch.getServiceName()).andReturn("HDFS").anyTimes();
expect(cluster.getService("HDFS")).andReturn(service).anyTimes();
expect(sch.getMaintenanceState()).andReturn(MaintenanceState.ON).times(1).andReturn(MaintenanceState.OFF).anyTimes();
expect(service.getMaintenanceState()).andReturn(MaintenanceState.ON);
expect(host.getMaintenanceState(1L)).andReturn(MaintenanceState.ON);
expect(service.getMaintenanceState()).andReturn(MaintenanceState.ON);
expect(host.getMaintenanceState(1L)).andReturn(MaintenanceState.OFF);
expect(service.getMaintenanceState()).andReturn(MaintenanceState.OFF);
expect(host.getMaintenanceState(1L)).andReturn(MaintenanceState.ON);
injectField(maintenanceStateHelper,clusters);
replay(maintenanceStateHelper,clusters,cluster,sch,host,service);
MaintenanceState state=maintenanceStateHelper.getEffectiveState(sch);
Assert.assertEquals(MaintenanceState.ON,state);
state=maintenanceStateHelper.getEffectiveState(sch);
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_SERVICE_AND_HOST,state);
state=maintenanceStateHelper.getEffectiveState(sch);
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_SERVICE,state);
state=maintenanceStateHelper.getEffectiveState(sch);
Assert.assertEquals(MaintenanceState.IMPLIED_FROM_HOST,state);
verify(maintenanceStateHelper,clusters,cluster,sch,host,service);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testHostOperationsAllowance() throws Exception {
Injector injector=createStrictMock(Injector.class);
MaintenanceStateHelper maintenanceStateHelper=createMockBuilder(MaintenanceStateHelper.class).withConstructor(injector).createNiceMock();
Host host=createMock(Host.class);
expect(host.getMaintenanceState(anyInt())).andReturn(MaintenanceState.ON);
expect(host.getMaintenanceState(anyInt())).andReturn(MaintenanceState.OFF);
replay(maintenanceStateHelper,host);
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.Cluster));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.Service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.Host));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.HostComponent));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.Cluster));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.Service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.Host));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(host,1,Resource.Type.HostComponent));
verify(maintenanceStateHelper,host);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testServiceOperationsAllowance() throws Exception {
Injector injector=createStrictMock(Injector.class);
MaintenanceStateHelper maintenanceStateHelper=createMockBuilder(MaintenanceStateHelper.class).withConstructor(injector).createNiceMock();
Service service=createMock(Service.class);
expect(service.getMaintenanceState()).andReturn(MaintenanceState.ON);
expect(service.getMaintenanceState()).andReturn(MaintenanceState.OFF);
replay(maintenanceStateHelper,service);
Assert.assertEquals(false,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Cluster,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Service,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.Host,service));
Assert.assertEquals(true,maintenanceStateHelper.isOperationAllowed(Resource.Type.HostComponent,service));
verify(maintenanceStateHelper,service);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGuessOperationLevel(){
Injector injector=createStrictMock(Injector.class);
MaintenanceStateHelper maintenanceStateHelper=createMockBuilder(MaintenanceStateHelper.class).withConstructor(injector).createNiceMock();
replay(maintenanceStateHelper);
Assert.assertEquals(Resource.Type.Cluster,maintenanceStateHelper.guessOperationLevel(null));
RequestResourceFilter resourceFilter=new RequestResourceFilter(null,null,null);
Assert.assertEquals(Resource.Type.Cluster,maintenanceStateHelper.guessOperationLevel(resourceFilter));
resourceFilter=new RequestResourceFilter("HDFS",null,null);
Assert.assertEquals(Resource.Type.Service,maintenanceStateHelper.guessOperationLevel(resourceFilter));
resourceFilter=new RequestResourceFilter("HDFS","NAMENODE",null);
Assert.assertEquals(Resource.Type.Service,maintenanceStateHelper.guessOperationLevel(resourceFilter));
ArrayList hosts=new ArrayList();
hosts.add("host1");
hosts.add("host2");
resourceFilter=new RequestResourceFilter("HDFS",null,hosts);
Assert.assertEquals(Resource.Type.Cluster,maintenanceStateHelper.guessOperationLevel(resourceFilter));
resourceFilter=new RequestResourceFilter(null,null,hosts);
Assert.assertEquals(Resource.Type.Host,maintenanceStateHelper.guessOperationLevel(resourceFilter));
resourceFilter=new RequestResourceFilter("HDFS","NAMENODE",hosts);
Assert.assertEquals(Resource.Type.HostComponent,maintenanceStateHelper.guessOperationLevel(resourceFilter));
}
Class: org.apache.ambari.server.controller.RefreshYarnCapacitySchedulerReleaseConfigTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testAllRequiresRestart() throws AmbariException, AuthorizationException {
createClusterFixture("HDP-2.0.7");
Cluster cluster=clusters.getCluster("c1");
ClusterRequest cr=new ClusterRequest(cluster.getClusterId(),"c1",cluster.getDesiredStackVersion().getStackVersion(),null);
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest("c1","core-site","version2",new HashMap(),null)));
controller.updateClusters(Collections.singleton(cr),null);
ServiceComponentHostRequest r=new ServiceComponentHostRequest("c1",null,null,null,null);
r.setStaleConfig("true");
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(4,resps.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConfigInComponent() throws Exception {
StackServiceRequest requestWithParams=new StackServiceRequest("HDP","2.0.6","YARN");
Set responsesWithParams=controller.getStackServices(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackServiceResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getServiceName(),"YARN");
Assert.assertTrue(responseWithParams.getConfigTypes().containsKey("capacity-scheduler"));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testRMRequiresRestart() throws AmbariException, AuthorizationException {
createClusterFixture("HDP-2.0.7");
Cluster cluster=clusters.getCluster("c1");
ClusterRequest cr=new ClusterRequest(cluster.getClusterId(),"c1",cluster.getDesiredStackVersion().getStackVersion(),null);
cr.setDesiredConfig(Collections.singletonList(new ConfigurationRequest("c1","capacity-scheduler","version2",new HashMap(),null)));
controller.updateClusters(Collections.singleton(cr),null);
ServiceComponentHostRequest r=new ServiceComponentHostRequest("c1",null,null,null,null);
r.setStaleConfig("true");
Set resps=controller.getHostComponents(Collections.singleton(r));
Assert.assertEquals(1,resps.size());
Assert.assertEquals(true,configHelper.isStaleConfigs(clusters.getCluster("c1").getService("YARN").getServiceComponent("RESOURCEMANAGER").getServiceComponentHost("c6401")));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConfigInComponentOverwrited() throws Exception {
StackServiceRequest requestWithParams=new StackServiceRequest("HDP","2.0.7","YARN");
Set responsesWithParams=controller.getStackServices(Collections.singleton(requestWithParams));
Assert.assertEquals(1,responsesWithParams.size());
for ( StackServiceResponse responseWithParams : responsesWithParams) {
Assert.assertEquals(responseWithParams.getServiceName(),"YARN");
Assert.assertTrue(responseWithParams.getConfigTypes().containsKey("capacity-scheduler"));
}
}
Class: org.apache.ambari.server.controller.RootServiceResponseFactoryTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetRootServices() throws Exception {
RootServiceRequest request=new RootServiceRequest(null);
Set rootServices=responseFactory.getRootServices(request);
assertEquals(RootServiceResponseFactory.Services.values().length,rootServices.size());
request=null;
rootServices=responseFactory.getRootServices(request);
assertEquals(RootServiceResponseFactory.Services.values().length,rootServices.size());
try {
request=new RootServiceRequest("XXX");
rootServices=responseFactory.getRootServices(request);
}
catch ( Exception e) {
assertTrue(e instanceof ObjectNotFoundException);
}
request=new RootServiceRequest(RootServiceResponseFactory.Services.AMBARI.name());
rootServices=responseFactory.getRootServices(request);
assertEquals(1,rootServices.size());
assertTrue(rootServices.contains(new RootServiceResponse(RootServiceResponseFactory.Services.AMBARI.name())));
}
IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetRootServiceComponents() throws Exception {
RootServiceComponentRequest request=new RootServiceComponentRequest(null,null);
Set rootServiceComponents;
try {
rootServiceComponents=responseFactory.getRootServiceComponents(request);
}
catch ( Exception e) {
assertTrue(e instanceof ObjectNotFoundException);
}
RootServiceResponseFactory.Components ambariServerComponent=RootServiceResponseFactory.Components.AMBARI_SERVER;
request=new RootServiceComponentRequest(null,ambariServerComponent.name());
try {
rootServiceComponents=responseFactory.getRootServiceComponents(request);
}
catch ( Exception e) {
assertTrue(e instanceof ObjectNotFoundException);
}
request=new RootServiceComponentRequest(RootServiceResponseFactory.Services.AMBARI.name(),null);
rootServiceComponents=responseFactory.getRootServiceComponents(request);
assertEquals(RootServiceResponseFactory.Services.AMBARI.getComponents().length,rootServiceComponents.size());
String ambariVersion=ambariMetaInfo.getServerVersion();
for (int i=0; i < RootServiceResponseFactory.Services.AMBARI.getComponents().length; i++) {
Components component=RootServiceResponseFactory.Services.AMBARI.getComponents()[i];
if (component.name().equals(ambariServerComponent.name())) {
for ( RootServiceComponentResponse response : rootServiceComponents) {
if (response.getComponentName().equals(ambariServerComponent.name())) {
assertEquals(ambariVersion,response.getComponentVersion());
assertEquals(1,response.getProperties().size(),1);
assertTrue(response.getProperties().containsKey("jdk_location"));
}
}
}
else {
assertTrue(rootServiceComponents.contains(new RootServiceComponentResponse(component.name(),RootServiceResponseFactory.NOT_APPLICABLE,Collections.emptyMap())));
}
}
request=new RootServiceComponentRequest(RootServiceResponseFactory.Services.AMBARI.name(),RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name());
rootServiceComponents=responseFactory.getRootServiceComponents(request);
assertEquals(1,rootServiceComponents.size());
for ( RootServiceComponentResponse response : rootServiceComponents) {
if (response.getComponentName().equals(RootServiceResponseFactory.Services.AMBARI.getComponents()[0].name())) {
assertEquals(ambariVersion,response.getComponentVersion());
assertEquals(2,response.getProperties().size());
assertTrue(response.getProperties().containsKey("jdk_location"));
assertTrue(response.getProperties().containsKey("java.version"));
}
}
request=new RootServiceComponentRequest(RootServiceResponseFactory.Services.AMBARI.name(),"XXX");
try {
rootServiceComponents=responseFactory.getRootServiceComponents(request);
}
catch ( Exception e) {
assertTrue(e instanceof ObjectNotFoundException);
}
}
Class: org.apache.ambari.server.controller.StackServiceResponseTest InternalCallVerifier BooleanVerifier
@Test public void testDefaultServiceVisibilityProperties(){
StackServiceResponse stackServiceResponse=new StackServiceResponse(serviceInfo);
assertTrue("true".equals(stackServiceResponse.getServiceProperties().get(ServiceInfo.DEFAULT_SERVICE_INSTALLABLE_PROPERTY.getKey())));
assertTrue("true".equals(stackServiceResponse.getServiceProperties().get(ServiceInfo.DEFAULT_SERVICE_MANAGED_PROPERTY.getKey())));
assertTrue("true".equals(stackServiceResponse.getServiceProperties().get(ServiceInfo.DEFAULT_SERVICE_MONITORED_PROPERTY.getKey())));
}
Class: org.apache.ambari.server.controller.gsinstaller.GSInstallerClusterProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerClusterProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
Assert.assertEquals("ambari",resources.iterator().next().getPropertyValue(GSInstallerClusterProvider.CLUSTER_NAME_PROPERTY_ID));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerClusterProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerClusterProvider.CLUSTER_NAME_PROPERTY_ID).equals("ambari").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource next=resources.iterator().next();
Assert.assertEquals("ambari",next.getPropertyValue(GSInstallerClusterProvider.CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("HDP-1.2.0",next.getPropertyValue(GSInstallerClusterProvider.CLUSTER_VERSION_PROPERTY_ID));
predicate=new PredicateBuilder().property(GSInstallerClusterProvider.CLUSTER_NAME_PROPERTY_ID).equals("non-existent Cluster").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
Class: org.apache.ambari.server.controller.gsinstaller.GSInstallerComponentProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerComponentProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(24,resources.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("TASKTRACKER").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
predicate=new PredicateBuilder().property(GSInstallerComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("TASKTRACKER").or().property(GSInstallerComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("GANGLIA_MONITOR").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property(GSInstallerComponentProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("BadComponent").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
Class: org.apache.ambari.server.controller.gsinstaller.GSInstallerHostComponentProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerHostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerHostComponentProvider.HOST_COMPONENT_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(5,resources.size());
predicate=new PredicateBuilder().property(GSInstallerHostComponentProvider.HOST_COMPONENT_HOST_NAME_PROPERTY_ID).equals("UnknownHost").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckStateFromCategory() throws Exception {
TestGSInstallerStateProvider stateProvider=new TestGSInstallerStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,500);
GSInstallerResourceProvider provider=new GSInstallerHostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerHostComponentProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("HBASE_REGIONSERVER").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest("HostRoles"),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("STARTED",resource.getPropertyValue(GSInstallerHostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
stateProvider.setHealthy(false);
Thread.sleep(501);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("INIT",resource.getPropertyValue(GSInstallerHostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckState() throws Exception {
TestGSInstallerStateProvider stateProvider=new TestGSInstallerStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,500);
GSInstallerResourceProvider provider=new GSInstallerHostComponentProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerHostComponentProvider.HOST_COMPONENT_COMPONENT_NAME_PROPERTY_ID).equals("HBASE_REGIONSERVER").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("STARTED",resource.getPropertyValue(GSInstallerHostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
stateProvider.setHealthy(false);
Thread.sleep(501);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("INIT",resource.getPropertyValue(GSInstallerHostComponentProvider.HOST_COMPONENT_STATE_PROPERTY_ID));
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerHostComponentProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(32,resources.size());
}
Class: org.apache.ambari.server.controller.gsinstaller.GSInstallerHostProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckStateFromCategory() throws Exception {
TestGSInstallerStateProvider stateProvider=new TestGSInstallerStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,500);
GSInstallerResourceProvider provider=new GSInstallerHostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("ip-10-190-97-104.ec2.internal").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest("Hosts"),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("HEALTHY",resource.getPropertyValue(GSInstallerHostProvider.HOST_STATE_PROPERTY_ID));
stateProvider.setHealthy(false);
Thread.sleep(501);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("INIT",resource.getPropertyValue(GSInstallerHostProvider.HOST_STATE_PROPERTY_ID));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerHostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("ip-10-190-97-104.ec2.internal").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
predicate=new PredicateBuilder().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("ip-10-190-97-104.ec2.internal").or().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("ip-10-8-113-183.ec2.internal").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("unknownHost").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckState() throws Exception {
TestGSInstallerStateProvider stateProvider=new TestGSInstallerStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,500);
GSInstallerResourceProvider provider=new GSInstallerHostProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerHostProvider.HOST_NAME_PROPERTY_ID).equals("ip-10-190-97-104.ec2.internal").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("HEALTHY",resource.getPropertyValue(GSInstallerHostProvider.HOST_STATE_PROPERTY_ID));
stateProvider.setHealthy(false);
Thread.sleep(501);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("INIT",resource.getPropertyValue(GSInstallerHostProvider.HOST_STATE_PROPERTY_ID));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerHostProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(5,resources.size());
}
Class: org.apache.ambari.server.controller.gsinstaller.GSInstallerServiceProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesWithPredicate() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
predicate=new PredicateBuilder().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("HDFS").or().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("GANGLIA").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("NO SERVICE").toPredicate();
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertTrue(resources.isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckStateFromCategory() throws Exception {
TestGSInstallerStateProvider stateProvider=new TestGSInstallerStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,500);
GSInstallerResourceProvider provider=new GSInstallerServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest("ServiceInfo"),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("STARTED",resource.getPropertyValue(GSInstallerServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
stateProvider.setHealthy(false);
Thread.sleep(501);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("INIT",resource.getPropertyValue(GSInstallerServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesCheckState() throws Exception {
TestGSInstallerStateProvider stateProvider=new TestGSInstallerStateProvider();
ClusterDefinition clusterDefinition=new ClusterDefinition(stateProvider,500);
GSInstallerResourceProvider provider=new GSInstallerServiceProvider(clusterDefinition);
Predicate predicate=new PredicateBuilder().property(GSInstallerServiceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("MAPREDUCE").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("STARTED",resource.getPropertyValue(GSInstallerServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
stateProvider.setHealthy(false);
Thread.sleep(501);
resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
resource=resources.iterator().next();
Assert.assertEquals("INIT",resource.getPropertyValue(GSInstallerServiceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ClusterDefinition clusterDefinition=new ClusterDefinition(new TestGSInstallerStateProvider());
GSInstallerResourceProvider provider=new GSInstallerServiceProvider(clusterDefinition);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(11,resources.size());
}
Class: org.apache.ambari.server.controller.internal.AbstractJDBCResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void test() throws SQLException {
Set requestedIds=new TreeSet();
requestedIds.add(property1);
requestedIds.add("none1");
requestedIds.add(property2);
AbstractJDBCResourceProvider provider=new TestAbstractJDBCResourceProviderImpl(requestedIds,null);
Assert.assertEquals(TestFields.field1.toString() + "," + TestFields.field2.toString(),provider.getDBFieldString(requestedIds));
Assert.assertEquals(TestFields.field1.toString(),provider.getDBFieldString(Collections.singleton(property1)));
Assert.assertEquals("",provider.getDBFieldString(Collections.singleton("none1")));
Assert.assertEquals(TestFields.field1,provider.getDBField(property1));
Assert.assertEquals(TestFields.field2,provider.getDBField(property2));
ResultSet rs=createMock(ResultSet.class);
expect(rs.getString(TestFields.field1.toString())).andReturn("1").once();
expect(rs.getLong(TestFields.field2.toString())).andReturn(2l).once();
expect(rs.getInt(TestFields.field1.toString())).andReturn(3).once();
replay(rs);
Resource r=new ResourceImpl((Resource.Type)null);
provider.setString(r,property1,rs,requestedIds);
provider.setString(r,"none2",rs,requestedIds);
Assert.assertEquals("1",r.getPropertyValue(property1));
r=new ResourceImpl((Resource.Type)null);
provider.setLong(r,property2,rs,requestedIds);
provider.setLong(r,"none2",rs,requestedIds);
Assert.assertEquals(2l,r.getPropertyValue(property2));
r=new ResourceImpl((Resource.Type)null);
provider.setInt(r,property1,rs,requestedIds);
provider.setInt(r,"none2",rs,requestedIds);
Assert.assertEquals(3,r.getPropertyValue(property1));
verify(rs);
}
Class: org.apache.ambari.server.controller.internal.AbstractPropertyProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetPropertyInfoMap(){
AbstractPropertyProvider provider=new TestPropertyProvider(PropertyHelper.getMetricPropertyIds(Resource.Type.HostComponent));
Map propertyInfoMap=provider.getPropertyInfoMap("NAMENODE","metrics/cpu/cpu_aidle");
Assert.assertEquals(1,propertyInfoMap.size());
Assert.assertTrue(propertyInfoMap.containsKey("metrics/cpu/cpu_aidle"));
propertyInfoMap=provider.getPropertyInfoMap("NAMENODE","metrics/disk");
Assert.assertEquals(3,propertyInfoMap.size());
Assert.assertTrue(propertyInfoMap.containsKey("metrics/disk/disk_free"));
Assert.assertTrue(propertyInfoMap.containsKey("metrics/disk/disk_total"));
Assert.assertTrue(propertyInfoMap.containsKey("metrics/disk/part_max_used"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateComponentMetricMapHDP1(){
Map> componentMetrics=PropertyHelper.getMetricPropertyIds(Resource.Type.HostComponent);
AbstractPropertyProvider provider=new TestPropertyProvider(componentMetrics);
Map flumeMetrics=provider.getComponentMetrics().get("FLUME_HANDLER");
int metricsBefore=flumeMetrics.size();
String specificMetric="metrics/flume/arg1/CHANNEL/arg2/ChannelCapacity";
String specificPropertyInfoId="arg1.CHANNEL.arg2.ChannelCapacity";
Map componentMetricMap=provider.getComponentMetrics().get("FLUME_HANDLER");
Assert.assertNull(flumeMetrics.get(specificMetric));
provider.updateComponentMetricMap(componentMetricMap,specificMetric);
Assert.assertEquals(metricsBefore + 1,flumeMetrics.size());
Assert.assertNotNull(flumeMetrics.get(specificMetric));
Assert.assertEquals(specificPropertyInfoId,flumeMetrics.get(specificMetric).getPropertyId());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetJMXPropertyInfoMap(){
AbstractPropertyProvider provider=new TestPropertyProvider(PropertyHelper.getJMXPropertyIds(Resource.Type.HostComponent));
Map propertyInfoMap=provider.getPropertyInfoMap("DATANODE","metrics");
Assert.assertEquals(86,propertyInfoMap.size());
propertyInfoMap=provider.getPropertyInfoMap("DATANODE","metrics/rpc/RpcQueueTime_avg_time");
Assert.assertEquals(1,propertyInfoMap.size());
Assert.assertTrue(propertyInfoMap.containsKey("metrics/rpc/RpcQueueTime_avg_time"));
propertyInfoMap=provider.getPropertyInfoMap("DATANODE","metrics/rpc/");
Assert.assertEquals(12,propertyInfoMap.size());
Assert.assertTrue(propertyInfoMap.containsKey("metrics/rpc/RpcQueueTime_avg_time"));
}
Class: org.apache.ambari.server.controller.internal.AbstractResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetQueryParameterValue(){
String queryParameterId1="qp/variable1";
String queryParameterValue1="value1";
String queryParameterId2="qp/variable2";
String queryParameterValue2="value2";
Predicate predicate=new PredicateBuilder().property(queryParameterId1).equals(queryParameterValue1).and().property(queryParameterId2).equals(queryParameterValue2).toPredicate();
Assert.assertEquals(queryParameterValue1,AbstractResourceProvider.getQueryParameterValue(queryParameterId1,predicate));
Assert.assertFalse(queryParameterValue2.equals(AbstractResourceProvider.getQueryParameterValue(queryParameterId1,predicate)));
Assert.assertNull(AbstractResourceProvider.getQueryParameterValue("queryParameterIdNotFound",predicate));
String queryParameterId3="qp/variable3";
String queryParameterValue3="value3";
predicate=new PredicateBuilder().property(queryParameterId3).equals(queryParameterValue3).and().begin().property(queryParameterId1).equals(queryParameterValue1).and().property(queryParameterId2).equals(queryParameterValue2).end().toPredicate();
Assert.assertEquals(queryParameterValue1,AbstractResourceProvider.getQueryParameterValue(queryParameterId1,predicate));
Assert.assertFalse(queryParameterValue2.equals(AbstractResourceProvider.getQueryParameterValue(queryParameterId1,predicate)));
Assert.assertNull(AbstractResourceProvider.getQueryParameterValue("queryParameterIdNotFound",predicate));
Assert.assertEquals(queryParameterValue3,AbstractResourceProvider.getQueryParameterValue(queryParameterId3,predicate));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetPropertyMaps() throws Exception {
AbstractResourceProvider provider=new TestResourceProvider();
Map updatePropertyMap=new HashMap();
updatePropertyMap.put("SomeProperty","SomeUpdateValue");
updatePropertyMap.put("SomeOtherProperty",99);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("ClusterName").equals("c1").and().property("ResourceName").equals("r1").toPredicate();
Set> propertyMaps=provider.getPropertyMaps(updatePropertyMap,predicate);
Assert.assertEquals(1,propertyMaps.size());
Map map=propertyMaps.iterator().next();
Assert.assertEquals(4,map.size());
Assert.assertEquals("c1",map.get("ClusterName"));
Assert.assertEquals("r1",map.get("ResourceName"));
Assert.assertEquals("SomeUpdateValue",map.get("SomeProperty"));
Assert.assertEquals(99,map.get("SomeOtherProperty"));
pb=new PredicateBuilder();
predicate=pb.property("ClusterName").equals("c1").and().begin().property("ResourceName").equals("r1").or().property("ResourceName").equals("r2").end().toPredicate();
propertyMaps=provider.getPropertyMaps(updatePropertyMap,predicate);
Assert.assertEquals(2,propertyMaps.size());
for ( Map map2 : propertyMaps) {
Assert.assertEquals(4,map2.size());
Assert.assertEquals("c1",map2.get("ClusterName"));
Object resourceName=map2.get("ResourceName");
Assert.assertTrue(resourceName.equals("r1") || resourceName.equals("r2"));
Assert.assertEquals("SomeUpdateValue",map2.get("SomeProperty"));
Assert.assertEquals(99,map2.get("SomeOtherProperty"));
}
predicate=new AlwaysPredicate();
propertyMaps=provider.getPropertyMaps(updatePropertyMap,predicate);
Assert.assertEquals(4,propertyMaps.size());
for ( Map map2 : propertyMaps) {
Assert.assertEquals(4,map2.size());
Assert.assertEquals("c1",map2.get("ClusterName"));
Object resourceName=map2.get("ResourceName");
Assert.assertTrue(resourceName.equals("r1") || resourceName.equals("r2") || resourceName.equals("r3")|| resourceName.equals("r4"));
Assert.assertEquals("SomeUpdateValue",map2.get("SomeProperty"));
Assert.assertEquals(99,map2.get("SomeOtherProperty"));
}
}
InternalCallVerifier BooleanVerifier
@Test public void testGetPropertyIds(){
Set propertyIds=new HashSet();
propertyIds.add("p1");
propertyIds.add("foo");
propertyIds.add("cat1/foo");
propertyIds.add("cat2/bar");
propertyIds.add("cat2/baz");
propertyIds.add("cat3/sub1/bam");
propertyIds.add("cat4/sub2/sub3/bat");
Map keyPropertyIds=new HashMap();
AmbariManagementController managementController=createMock(AmbariManagementController.class);
MaintenanceStateHelper maintenanceStateHelper=createNiceMock(MaintenanceStateHelper.class);
replay(maintenanceStateHelper);
AbstractResourceProvider provider=new ServiceResourceProvider(propertyIds,keyPropertyIds,managementController,maintenanceStateHelper);
Set supportedPropertyIds=provider.getPropertyIds();
Assert.assertTrue(supportedPropertyIds.containsAll(propertyIds));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCheckPropertyIds(){
Set propertyIds=new HashSet();
propertyIds.add("foo");
propertyIds.add("cat1/foo");
propertyIds.add("cat2/bar");
propertyIds.add("cat2/baz");
propertyIds.add("cat3/sub1/bam");
propertyIds.add("cat4/sub2/sub3/bat");
propertyIds.add("cat5/subcat5/map");
Map keyPropertyIds=new HashMap();
AmbariManagementController managementController=createMock(AmbariManagementController.class);
MaintenanceStateHelper maintenanceStateHelper=createNiceMock(MaintenanceStateHelper.class);
replay(maintenanceStateHelper);
AbstractResourceProvider provider=new ServiceResourceProvider(propertyIds,keyPropertyIds,managementController,maintenanceStateHelper);
Set unsupported=provider.checkPropertyIds(Collections.singleton("foo"));
Assert.assertTrue(unsupported.isEmpty());
Assert.assertTrue(provider.checkPropertyIds(Collections.singleton("cat5/subcat5/map/key")).isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("bar"));
Assert.assertEquals(1,unsupported.size());
Assert.assertTrue(unsupported.contains("bar"));
unsupported=provider.checkPropertyIds(Collections.singleton("cat1/foo"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("cat1"));
Assert.assertTrue(unsupported.isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRequestStatus(){
Set propertyIds=new HashSet();
Map keyPropertyIds=new HashMap();
AmbariManagementController managementController=createMock(AmbariManagementController.class);
MaintenanceStateHelper maintenanceStateHelper=createNiceMock(MaintenanceStateHelper.class);
replay(maintenanceStateHelper);
AbstractResourceProvider provider=new ServiceResourceProvider(propertyIds,keyPropertyIds,managementController,maintenanceStateHelper);
RequestStatus status=provider.getRequestStatus(null);
Assert.assertNull(status.getRequestResource());
Assert.assertEquals(Collections.emptySet(),status.getAssociatedResources());
RequestStatusResponse response=new RequestStatusResponse(99L);
status=provider.getRequestStatus(response);
Resource resource=status.getRequestResource();
Assert.assertEquals(99L,resource.getPropertyValue("Requests/id"));
Assert.assertEquals(Collections.emptySet(),status.getAssociatedResources());
status=provider.getRequestStatus(response,null);
resource=status.getRequestResource();
Assert.assertEquals(99L,resource.getPropertyValue("Requests/id"));
Assert.assertEquals(Collections.emptySet(),status.getAssociatedResources());
Resource associatedResource=new ResourceImpl(Resource.Type.Service);
Set associatedResources=Collections.singleton(associatedResource);
status=provider.getRequestStatus(response,associatedResources);
resource=status.getRequestResource();
Assert.assertEquals(99L,resource.getPropertyValue("Requests/id"));
Assert.assertEquals(associatedResources,status.getAssociatedResources());
}
Class: org.apache.ambari.server.controller.internal.ActionResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.Action;
AmbariMetaInfo am=createNiceMock(AmbariMetaInfo.class);
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
expect(managementController.getAmbariMetaInfo()).andReturn(am).anyTimes();
List allDefinition=new ArrayList();
allDefinition.add(new ActionDefinition("a1",ActionType.SYSTEM,"fileName","HDFS","DATANODE","Does file exist",TargetHostType.ANY,Short.valueOf("100")));
allDefinition.add(new ActionDefinition("a2",ActionType.SYSTEM,"fileName","HDFS","DATANODE","Does file exist",TargetHostType.ANY,Short.valueOf("100")));
allDefinition.add(new ActionDefinition("a3",ActionType.SYSTEM,"fileName","HDFS","DATANODE","Does file exist",TargetHostType.ANY,Short.valueOf("100")));
Set allResponse=new HashSet();
for ( ActionDefinition definition : allDefinition) {
allResponse.add(definition.convertToResponse());
}
ActionDefinition namedDefinition=new ActionDefinition("a1",ActionType.SYSTEM,"fileName","HDFS","DATANODE","Does file exist",TargetHostType.ANY,Short.valueOf("100"));
Set nameResponse=new HashSet();
nameResponse.add(namedDefinition.convertToResponse());
expect(am.getAllActionDefinition()).andReturn(allDefinition).once();
expect(am.getActionDefinition("a1")).andReturn(namedDefinition).once();
replay(managementController,am);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(ActionResourceProvider.ACTION_NAME_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.ACTION_TYPE_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.DEFAULT_TIMEOUT_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.DESCRIPTION_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.INPUTS_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.TARGET_COMPONENT_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.TARGET_HOST_PROPERTY_ID);
propertyIds.add(ActionResourceProvider.TARGET_SERVICE_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String actionName=(String)resource.getPropertyValue(ActionResourceProvider.ACTION_NAME_PROPERTY_ID);
String actionType=(String)resource.getPropertyValue(ActionResourceProvider.ACTION_TYPE_PROPERTY_ID);
String defaultTimeout=(String)resource.getPropertyValue(ActionResourceProvider.DEFAULT_TIMEOUT_PROPERTY_ID);
String description=(String)resource.getPropertyValue(ActionResourceProvider.DESCRIPTION_PROPERTY_ID);
String inputs=(String)resource.getPropertyValue(ActionResourceProvider.INPUTS_PROPERTY_ID);
String comp=(String)resource.getPropertyValue(ActionResourceProvider.TARGET_COMPONENT_PROPERTY_ID);
String svc=(String)resource.getPropertyValue(ActionResourceProvider.TARGET_SERVICE_PROPERTY_ID);
String host=(String)resource.getPropertyValue(ActionResourceProvider.TARGET_HOST_PROPERTY_ID);
Assert.assertTrue(allResponse.contains(new ActionResponse(actionName,actionType,inputs,svc,comp,description,host,defaultTimeout)));
}
Predicate predicate=new PredicateBuilder().property(ActionResourceProvider.ACTION_NAME_PROPERTY_ID).equals("a1").toPredicate();
resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Assert.assertEquals("a1",resources.iterator().next().getPropertyValue(ActionResourceProvider.ACTION_NAME_PROPERTY_ID));
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.AlertDefinitionResourceProviderTest InternalCallVerifier EqualityVerifier
/**
* @throws Exception
*/
@Test public void testGetResourcesNoPredicate() throws Exception {
AlertDefinitionResourceProvider provider=createProvider(null);
Request request=PropertyHelper.getReadRequest("AlertDefinition/cluster_name","AlertDefinition/id");
Set results=provider.getResources(request,null);
assertEquals(0,results.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testUpdateResourcesWithNumbersAsStrings() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).atLeastOnce();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
expect(definitionHash.invalidateHosts(EasyMock.anyObject(AlertDefinitionEntity.class))).andReturn(new HashSet()).atLeastOnce();
replay(amc,clusters,cluster,dao,definitionHash);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
MetricSource source=(MetricSource)getMockSource();
Map requestProps=new HashMap();
requestProps.put(AlertDefinitionResourceProvider.ALERT_DEF_CLUSTER_NAME,"c1");
requestProps.put(AlertDefinitionResourceProvider.ALERT_DEF_INTERVAL,"1");
requestProps.put(AlertDefinitionResourceProvider.ALERT_DEF_NAME,"my_def");
requestProps.put(AlertDefinitionResourceProvider.ALERT_DEF_SERVICE_NAME,"HDFS");
requestProps.put(AlertDefinitionResourceProvider.ALERT_DEF_SOURCE_TYPE,"METRIC");
requestProps.put("AlertDefinition/source/reporting/critical/text",source.getReporting().getCritical().getText());
requestProps.put("AlertDefinition/source/reporting/critical/value","1234.5");
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
AlertDefinitionResourceProvider provider=createProvider(amc);
provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
AlertDefinitionEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
String sourceJson=entity.getSource();
Gson gson=new Gson();
source=gson.fromJson(sourceJson,MetricSource.class);
assertEquals(new Double(1234.5d),source.getReporting().getCritical().getValue());
verify(amc,clusters,cluster,dao);
}
Class: org.apache.ambari.server.controller.internal.AlertResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier
/**
* @throws Exception
*/
@Test public void testResponseIsPaginated() throws Exception {
expect(m_dao.findAll(EasyMock.anyObject(AlertCurrentRequest.class))).andReturn(getClusterMockEntities()).atLeastOnce();
expect(m_dao.getCount(EasyMock.anyObject(Predicate.class))).andReturn(0).atLeastOnce();
replay(m_dao);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
Set requestProperties=new HashSet();
requestProperties.add(AlertResourceProvider.ALERT_ID);
requestProperties.add(AlertResourceProvider.ALERT_DEFINITION_NAME);
Request request=PropertyHelper.getReadRequest(requestProperties);
Predicate predicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_CLUSTER_NAME).equals("c1").toPredicate();
AlertResourceProvider provider=createProvider();
QueryResponse response=provider.queryForResources(request,predicate);
assertFalse(response.isPagedResponse());
PageRequest pageRequest=new PageRequestImpl(StartingPoint.Beginning,5,10,predicate,null);
request=PropertyHelper.getReadRequest(requestProperties,null,null,pageRequest,null);
response=provider.queryForResources(request,predicate);
assertTrue(response.isPagedResponse());
verify(m_dao);
}
Class: org.apache.ambari.server.controller.internal.AmbariPrivilegeResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testToResource_VIEW(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("CLUSTER.ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Cluster Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getId()).andReturn(1L).atLeastOnce();
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ViewEntity viewEntity=createMock(ViewEntity.class);
expect(viewEntity.getCommonName()).andReturn("TestView").atLeastOnce();
expect(viewEntity.getVersion()).andReturn("1.2.3.4").atLeastOnce();
ViewInstanceEntity viewInstanceEntity=createMock(ViewInstanceEntity.class);
expect(viewInstanceEntity.getViewEntity()).andReturn(viewEntity).atLeastOnce();
expect(viewInstanceEntity.getName()).andReturn("Test View").atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("VIEW").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getId()).andReturn(1L).atLeastOnce();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
replay(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,viewInstanceEntity,viewEntity,resourceEntity,privilegeEntity);
Map userEntities=new HashMap<>();
Map groupEntities=new HashMap<>();
Map resourceEntities=new HashMap();
resourceEntities.put(resourceEntity.getId(),viewInstanceEntity);
AmbariPrivilegeResourceProvider provider=new AmbariPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,userEntities,groupEntities,resourceEntities,provider.getPropertyIds());
Assert.assertEquals("Test View",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
Assert.assertEquals("TestView",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
Assert.assertEquals("1.2.3.4",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_VERSION_PROPERTY_ID));
Assert.assertEquals(ResourceType.VIEW.name(),resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verify(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,viewInstanceEntity,viewEntity,resourceEntity,privilegeEntity);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_allTypes() throws Exception {
Injector injector=createInjector();
PrivilegeEntity ambariPrivilegeEntity=createNiceMock(PrivilegeEntity.class);
ResourceEntity ambariResourceEntity=createNiceMock(ResourceEntity.class);
ResourceTypeEntity ambariResourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
UserEntity ambariUserEntity=createNiceMock(UserEntity.class);
PrincipalEntity ambariPrincipalEntity=createNiceMock(PrincipalEntity.class);
PrincipalTypeEntity ambariPrincipalTypeEntity=createNiceMock(PrincipalTypeEntity.class);
PermissionEntity ambariPermissionEntity=createNiceMock(PermissionEntity.class);
expect(ambariPrivilegeEntity.getResource()).andReturn(ambariResourceEntity).anyTimes();
expect(ambariPrivilegeEntity.getId()).andReturn(31).anyTimes();
expect(ambariPrivilegeEntity.getPrincipal()).andReturn(ambariPrincipalEntity).anyTimes();
expect(ambariPrivilegeEntity.getPermission()).andReturn(ambariPermissionEntity).anyTimes();
expect(ambariResourceEntity.getResourceType()).andReturn(ambariResourceTypeEntity).anyTimes();
expect(ambariResourceTypeEntity.getId()).andReturn(ResourceType.AMBARI.getId()).anyTimes();
expect(ambariResourceTypeEntity.getName()).andReturn(ResourceType.AMBARI.name()).anyTimes();
expect(ambariPrincipalEntity.getId()).andReturn(1L).anyTimes();
expect(ambariUserEntity.getPrincipal()).andReturn(ambariPrincipalEntity).anyTimes();
expect(ambariUserEntity.getUserName()).andReturn("joe").anyTimes();
expect(ambariPermissionEntity.getPermissionName()).andReturn("AMBARI.ADMINISTRATOR").anyTimes();
expect(ambariPermissionEntity.getPermissionLabel()).andReturn("Administrator").anyTimes();
expect(ambariPrincipalEntity.getPrincipalType()).andReturn(ambariPrincipalTypeEntity).anyTimes();
expect(ambariPrincipalTypeEntity.getName()).andReturn("USER").anyTimes();
PrivilegeEntity viewPrivilegeEntity=createNiceMock(PrivilegeEntity.class);
ResourceEntity viewResourceEntity=createNiceMock(ResourceEntity.class);
ViewEntity viewEntity=createNiceMock(ViewEntity.class);
ViewInstanceEntity viewInstanceEntity=createNiceMock(ViewInstanceEntity.class);
ResourceTypeEntity viewResourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
UserEntity viewUserEntity=createNiceMock(UserEntity.class);
PrincipalEntity viewPrincipalEntity=createNiceMock(PrincipalEntity.class);
PrincipalTypeEntity viewPrincipalTypeEntity=createNiceMock(PrincipalTypeEntity.class);
PermissionEntity viewPermissionEntity=createNiceMock(PermissionEntity.class);
expect(viewPrivilegeEntity.getResource()).andReturn(viewResourceEntity).anyTimes();
expect(viewPrivilegeEntity.getPrincipal()).andReturn(viewPrincipalEntity).anyTimes();
expect(viewPrivilegeEntity.getPermission()).andReturn(viewPermissionEntity).anyTimes();
expect(viewPrivilegeEntity.getId()).andReturn(33).anyTimes();
expect(viewResourceEntity.getResourceType()).andReturn(viewResourceTypeEntity).anyTimes();
expect(viewResourceTypeEntity.getId()).andReturn(ResourceType.VIEW.getId()).anyTimes();
expect(viewResourceTypeEntity.getName()).andReturn(ResourceType.VIEW.name()).anyTimes();
expect(viewPrincipalEntity.getId()).andReturn(5L).anyTimes();
expect(viewEntity.getInstances()).andReturn(Arrays.asList(viewInstanceEntity)).anyTimes();
expect(viewInstanceEntity.getViewEntity()).andReturn(viewEntity).anyTimes();
expect(viewEntity.getCommonName()).andReturn("view").anyTimes();
expect(viewEntity.getVersion()).andReturn("1.0.1").anyTimes();
expect(viewEntity.isDeployed()).andReturn(true).anyTimes();
expect(viewInstanceEntity.getName()).andReturn("inst1").anyTimes();
expect(viewInstanceEntity.getResource()).andReturn(viewResourceEntity).anyTimes();
expect(viewUserEntity.getPrincipal()).andReturn(viewPrincipalEntity).anyTimes();
expect(viewUserEntity.getUserName()).andReturn("bob").anyTimes();
expect(viewPermissionEntity.getPermissionName()).andReturn("VIEW.USER").anyTimes();
expect(viewPermissionEntity.getPermissionLabel()).andReturn("View User").anyTimes();
expect(viewPrincipalEntity.getPrincipalType()).andReturn(viewPrincipalTypeEntity).anyTimes();
expect(viewPrincipalTypeEntity.getName()).andReturn("USER").anyTimes();
PrivilegeEntity clusterPrivilegeEntity=createNiceMock(PrivilegeEntity.class);
ResourceEntity clusterResourceEntity=createNiceMock(ResourceEntity.class);
ResourceTypeEntity clusterResourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
UserEntity clusterUserEntity=createNiceMock(UserEntity.class);
PrincipalEntity clusterPrincipalEntity=createNiceMock(PrincipalEntity.class);
PrincipalTypeEntity clusterPrincipalTypeEntity=createNiceMock(PrincipalTypeEntity.class);
PermissionEntity clusterPermissionEntity=createNiceMock(PermissionEntity.class);
ClusterEntity clusterEntity=createNiceMock(ClusterEntity.class);
expect(clusterPrivilegeEntity.getResource()).andReturn(clusterResourceEntity).anyTimes();
expect(clusterPrivilegeEntity.getPrincipal()).andReturn(clusterPrincipalEntity).anyTimes();
expect(clusterPrivilegeEntity.getPermission()).andReturn(clusterPermissionEntity).anyTimes();
expect(clusterPrivilegeEntity.getId()).andReturn(32).anyTimes();
expect(clusterResourceEntity.getId()).andReturn(7L).anyTimes();
expect(clusterResourceEntity.getResourceType()).andReturn(clusterResourceTypeEntity).anyTimes();
expect(clusterResourceTypeEntity.getId()).andReturn(ResourceType.CLUSTER.getId()).anyTimes();
expect(clusterResourceTypeEntity.getName()).andReturn(ResourceType.CLUSTER.name()).anyTimes();
expect(clusterPrincipalEntity.getId()).andReturn(8L).anyTimes();
expect(clusterUserEntity.getPrincipal()).andReturn(clusterPrincipalEntity).anyTimes();
expect(clusterUserEntity.getUserName()).andReturn("jeff").anyTimes();
expect(clusterPermissionEntity.getPermissionName()).andReturn("CLUSTER.USER").anyTimes();
expect(clusterPermissionEntity.getPermissionLabel()).andReturn("Cluster User").anyTimes();
expect(clusterPrincipalEntity.getPrincipalType()).andReturn(clusterPrincipalTypeEntity).anyTimes();
expect(clusterPrincipalTypeEntity.getName()).andReturn("USER").anyTimes();
expect(clusterEntity.getResource()).andReturn(clusterResourceEntity).anyTimes();
expect(clusterEntity.getClusterName()).andReturn("cluster1").anyTimes();
List userEntities=new LinkedList();
userEntities.add(ambariUserEntity);
userEntities.add(viewUserEntity);
userEntities.add(clusterUserEntity);
List privilegeEntities=new LinkedList();
privilegeEntities.add(ambariPrivilegeEntity);
privilegeEntities.add(viewPrivilegeEntity);
privilegeEntities.add(clusterPrivilegeEntity);
List clusterEntities=new LinkedList();
clusterEntities.add(clusterEntity);
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
expect(clusterDAO.findAll()).andReturn(clusterEntities).atLeastOnce();
PrivilegeDAO privilegeDAO=injector.getInstance(PrivilegeDAO.class);
expect(privilegeDAO.findAll()).andReturn(privilegeEntities).atLeastOnce();
UserDAO userDAO=injector.getInstance(UserDAO.class);
expect(userDAO.findUsersByPrincipal(anyObject(List.class))).andReturn(userEntities).atLeastOnce();
GroupDAO groupDAO=injector.getInstance(GroupDAO.class);
expect(groupDAO.findGroupsByPrincipal(anyObject(List.class))).andReturn(Collections.emptyList()).atLeastOnce();
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator("admin"));
ResourceProvider provider=getResourceProvider(injector);
ViewRegistry.getInstance().addDefinition(viewEntity);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(3,resources.size());
Map resourceMap=new HashMap();
for ( Resource resource : resources) {
resourceMap.put(resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_ID_PROPERTY_ID),resource);
}
Resource resource1=resourceMap.get(31);
Assert.assertEquals(6,resource1.getPropertiesMap().get("PrivilegeInfo").size());
Assert.assertEquals("AMBARI.ADMINISTRATOR",resource1.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID));
Assert.assertEquals("Administrator",resource1.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_LABEL_PROPERTY_ID));
Assert.assertEquals("joe",resource1.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID));
Assert.assertEquals("USER",resource1.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID));
Assert.assertEquals(31,resource1.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_ID_PROPERTY_ID));
Assert.assertEquals("AMBARI",resource1.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
Resource resource2=resourceMap.get(32);
Assert.assertEquals(7,resource2.getPropertiesMap().get("PrivilegeInfo").size());
Assert.assertEquals("CLUSTER.USER",resource2.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID));
Assert.assertEquals("Cluster User",resource2.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_LABEL_PROPERTY_ID));
Assert.assertEquals("jeff",resource2.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID));
Assert.assertEquals("USER",resource2.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID));
Assert.assertEquals(32,resource2.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_ID_PROPERTY_ID));
Assert.assertEquals("cluster1",resource2.getPropertyValue(ClusterPrivilegeResourceProvider.PRIVILEGE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("CLUSTER",resource2.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
Resource resource3=resourceMap.get(33);
Assert.assertEquals(9,resource3.getPropertiesMap().get("PrivilegeInfo").size());
Assert.assertEquals("VIEW.USER",resource3.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID));
Assert.assertEquals("View User",resource3.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_LABEL_PROPERTY_ID));
Assert.assertEquals("bob",resource3.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID));
Assert.assertEquals("USER",resource3.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID));
Assert.assertEquals(33,resource3.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_ID_PROPERTY_ID));
Assert.assertEquals("view",resource3.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
Assert.assertEquals("1.0.1",resource3.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_VERSION_PROPERTY_ID));
Assert.assertEquals("inst1",resource3.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
Assert.assertEquals("VIEW",resource3.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verifyAll();
}
InternalCallVerifier EqualityVerifier
@Test public void testToResource_AMBARI(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getId()).andReturn(1L).atLeastOnce();
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("AMBARI").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
replay(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,resourceEntity,privilegeEntity);
Map userEntities=new HashMap<>();
Map groupEntities=new HashMap<>();
Map resourceEntities=new HashMap();
AmbariPrivilegeResourceProvider provider=new AmbariPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,userEntities,groupEntities,resourceEntities,provider.getPropertyIds());
Assert.assertEquals(ResourceType.AMBARI.name(),resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verify(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,resourceEntity,privilegeEntity);
}
InternalCallVerifier EqualityVerifier
@Test public void testToResource_CLUSTER(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("CLUSTER.ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Cluster Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getId()).andReturn(1L).atLeastOnce();
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ClusterEntity clusterEntity=createMock(ClusterEntity.class);
expect(clusterEntity.getClusterName()).andReturn("TestCluster").atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("CLUSTER").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getId()).andReturn(1L).atLeastOnce();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
replay(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,clusterEntity,resourceEntity,privilegeEntity);
Map userEntities=new HashMap<>();
Map groupEntities=new HashMap<>();
Map resourceEntities=new HashMap();
resourceEntities.put(resourceEntity.getId(),clusterEntity);
AmbariPrivilegeResourceProvider provider=new AmbariPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,userEntities,groupEntities,resourceEntities,provider.getPropertyIds());
Assert.assertEquals("TestCluster",resource.getPropertyValue(ClusterPrivilegeResourceProvider.PRIVILEGE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals(ResourceType.CLUSTER.name(),resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verify(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,clusterEntity,resourceEntity,privilegeEntity);
}
InternalCallVerifier EqualityVerifier
@Test public void testToResource_SpecificVIEW(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("CLUSTER.ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Cluster Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getId()).andReturn(1L).atLeastOnce();
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ViewEntity viewEntity=createMock(ViewEntity.class);
expect(viewEntity.getCommonName()).andReturn("TestView").atLeastOnce();
expect(viewEntity.getVersion()).andReturn("1.2.3.4").atLeastOnce();
ViewInstanceEntity viewInstanceEntity=createMock(ViewInstanceEntity.class);
expect(viewInstanceEntity.getViewEntity()).andReturn(viewEntity).atLeastOnce();
expect(viewInstanceEntity.getName()).andReturn("Test View").atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("TestView{1.2.3.4}").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getId()).andReturn(1L).atLeastOnce();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
replay(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,viewInstanceEntity,viewEntity,resourceEntity,privilegeEntity);
Map userEntities=new HashMap<>();
Map groupEntities=new HashMap<>();
Map resourceEntities=new HashMap();
resourceEntities.put(resourceEntity.getId(),viewInstanceEntity);
AmbariPrivilegeResourceProvider provider=new AmbariPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,userEntities,groupEntities,resourceEntities,provider.getPropertyIds());
Assert.assertEquals("Test View",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
Assert.assertEquals("TestView",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
Assert.assertEquals("1.2.3.4",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_VERSION_PROPERTY_ID));
Assert.assertEquals(ResourceType.VIEW.name(),resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verify(permissionEntity,principalTypeEntity,principalEntity,resourceTypeEntity,viewInstanceEntity,viewEntity,resourceEntity,privilegeEntity);
}
Class: org.apache.ambari.server.controller.internal.ArtifactResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testCreateResource() throws Exception {
Capture createEntityCapture=new Capture();
Map outerMap=new TreeMap();
Map childMap=new TreeMap();
outerMap.put("child",childMap);
childMap.put("childKey","childValue");
Map child2Map=new TreeMap();
childMap.put("child2",child2Map);
child2Map.put("child2Key","child2Value");
Map child3Map=new TreeMap();
child2Map.put("child3",child3Map);
Map child4Map=new TreeMap();
child3Map.put("child4",child4Map);
child4Map.put("child4Key","child4Value");
Set> propertySet=new HashSet>();
propertySet.add(outerMap);
propertySet.add(child4Map);
Map artifact_data=new TreeMap();
artifact_data.put("foo","bar");
artifact_data.put("child",childMap);
artifact_data.put("collection",propertySet);
TreeMap foreignKeys=new TreeMap();
foreignKeys.put("cluster","500");
Map requestInfoProps=new HashMap();
requestInfoProps.put(Request.REQUEST_INFO_BODY_PROPERTY,bodyJson);
Map properties=new HashMap();
properties.put("Artifacts/artifact_name","test-artifact");
properties.put("Artifacts/cluster_name","test-cluster");
properties.put("artifact_data/foo","bar");
properties.put("artifact_data/child/childKey","childValue");
properties.put("artifact_data/child/child2/child2Key","child2Value");
properties.put("artifact_data/child/child2/child3/child4/child4Key","child4Value");
Collection collectionProperties=new HashSet();
properties.put("artifact_data/collection",collectionProperties);
Map map1=new TreeMap();
collectionProperties.add(map1);
map1.put("foo","bar");
map1.put("child/childKey","childValue");
map1.put("child/child2/child2Key","child2Value");
map1.put("child/child2/child3/child4/child4Key","child4Value");
Map map2=new TreeMap();
collectionProperties.add(map2);
map2.put("child4Key","child4Value");
Set> requestProperties=Collections.singleton(properties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProps).anyTimes();
expect(request.getProperties()).andReturn(requestProperties).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("test-cluster")).andReturn(cluster).anyTimes();
expect(clusters.getClusterById(500L)).andReturn(cluster).anyTimes();
expect(cluster.getClusterId()).andReturn(500L).anyTimes();
expect(cluster.getClusterName()).andReturn("test-cluster").anyTimes();
expect(dao.findByNameAndForeignKeys(eq("test-artifact"),eq(foreignKeys))).andReturn(null).once();
dao.create(capture(createEntityCapture));
replay(dao,em,controller,request,clusters,cluster,entity,entity2);
resourceProvider.createResources(request);
ArtifactEntity createEntity=createEntityCapture.getValue();
assertEquals("test-artifact",createEntity.getArtifactName());
Map actualArtifactData=createEntity.getArtifactData();
assertEquals(artifact_data.size(),actualArtifactData.size());
assertEquals(artifact_data.get("foo"),actualArtifactData.get("foo"));
assertEquals(artifact_data.get("child"),actualArtifactData.get("child"));
assertEquals(artifact_data.get("collection"),new HashSet(((Collection)actualArtifactData.get("collection"))));
assertEquals(foreignKeys,createEntity.getForeignKeys());
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources_collection() throws Exception {
Set propertyIds=new HashSet();
TreeMap foreignKeys=new TreeMap();
foreignKeys.put("cluster","500");
List entities=new ArrayList();
entities.add(entity);
entities.add(entity2);
Map artifact_data=Collections.singletonMap("foo","bar");
Map artifact_data2=Collections.singletonMap("foo2","bar2");
Map responseForeignKeys=new HashMap();
responseForeignKeys.put("cluster","500");
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("test-cluster")).andReturn(cluster).anyTimes();
expect(clusters.getClusterById(500L)).andReturn(cluster).anyTimes();
expect(cluster.getClusterId()).andReturn(500L).anyTimes();
expect(cluster.getClusterName()).andReturn("test-cluster").anyTimes();
expect(request.getPropertyIds()).andReturn(propertyIds).anyTimes();
expect(dao.findByForeignKeys(eq(foreignKeys))).andReturn(entities).anyTimes();
expect(entity.getArtifactName()).andReturn("test-artifact").anyTimes();
expect(entity.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity.getArtifactData()).andReturn(artifact_data).anyTimes();
expect(entity2.getArtifactName()).andReturn("test-artifact2").anyTimes();
expect(entity2.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity2.getArtifactData()).andReturn(artifact_data2).anyTimes();
replay(dao,em,controller,request,clusters,cluster,entity,entity2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.begin().property("Artifacts/cluster_name").equals("test-cluster").end().toPredicate();
Set response=resourceProvider.getResources(request,predicate);
assertEquals(2,response.size());
boolean artifact1Returned=false;
boolean artifact2Returned=false;
for ( Resource resource : response) {
if (resource.getPropertyValue("Artifacts/artifact_name").equals("test-artifact")) {
artifact1Returned=true;
assertEquals("bar",resource.getPropertyValue("artifact_data/foo"));
assertEquals("test-cluster",resource.getPropertyValue("Artifacts/cluster_name"));
}
else if (resource.getPropertyValue("Artifacts/artifact_name").equals("test-artifact2")) {
artifact2Returned=true;
assertEquals("bar2",resource.getPropertyValue("artifact_data/foo2"));
assertEquals("test-cluster",resource.getPropertyValue("Artifacts/cluster_name"));
}
else {
fail("unexpected artifact name");
}
}
assertTrue(artifact1Returned);
assertTrue(artifact2Returned);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_instance() throws Exception {
Set propertyIds=new HashSet();
TreeMap foreignKeys=new TreeMap();
foreignKeys.put("cluster","500");
Map childMap=new TreeMap();
childMap.put("childKey","childValue");
Map child2Map=new TreeMap();
childMap.put("child2",child2Map);
child2Map.put("child2Key","child2Value");
Map child3Map=new TreeMap();
child2Map.put("child3",child3Map);
Map child4Map=new TreeMap();
child3Map.put("child4",child4Map);
child4Map.put("child4Key","child4Value");
Map artifact_data=new TreeMap();
artifact_data.put("foo","bar");
artifact_data.put("child",childMap);
Map responseForeignKeys=new HashMap();
responseForeignKeys.put("cluster","500");
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("test-cluster")).andReturn(cluster).anyTimes();
expect(clusters.getClusterById(500L)).andReturn(cluster).anyTimes();
expect(cluster.getClusterId()).andReturn(500L).anyTimes();
expect(cluster.getClusterName()).andReturn("test-cluster").anyTimes();
expect(request.getPropertyIds()).andReturn(propertyIds).anyTimes();
expect(dao.findByNameAndForeignKeys(eq("test-artifact"),eq(foreignKeys))).andReturn(entity).once();
expect(entity.getArtifactName()).andReturn("test-artifact").anyTimes();
expect(entity.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity.getArtifactData()).andReturn(artifact_data).anyTimes();
replay(dao,em,controller,request,clusters,cluster,entity,entity2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.begin().property("Artifacts/cluster_name").equals("test-cluster").and().property("Artifacts/artifact_name").equals("test-artifact").end().toPredicate();
Set response=resourceProvider.getResources(request,predicate);
assertEquals(1,response.size());
Resource resource=response.iterator().next();
Map> responseProperties=resource.getPropertiesMap();
assertEquals(5,responseProperties.size());
Map artifactDataMap=responseProperties.get("artifact_data");
assertEquals("bar",artifactDataMap.get("foo"));
assertEquals("test-artifact",resource.getPropertyValue("Artifacts/artifact_name"));
assertEquals("test-cluster",resource.getPropertyValue("Artifacts/cluster_name"));
assertEquals("bar",resource.getPropertyValue("artifact_data/foo"));
assertEquals("childValue",resource.getPropertyValue("artifact_data/child/childKey"));
assertEquals("child2Value",resource.getPropertyValue("artifact_data/child/child2/child2Key"));
assertEquals("child4Value",resource.getPropertyValue("artifact_data/child/child2/child3/child4/child4Key"));
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testDeleteResources() throws Exception {
Capture deleteEntityCapture=new Capture();
Capture deleteEntityCapture2=new Capture();
TreeMap foreignKeys=new TreeMap();
foreignKeys.put("cluster","500");
List entities=new ArrayList();
entities.add(entity);
entities.add(entity2);
Map artifact_data=Collections.singletonMap("foo","bar");
Map artifact_data2=Collections.singletonMap("foo2","bar2");
Map responseForeignKeys=new HashMap();
responseForeignKeys.put("cluster","500");
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("test-cluster")).andReturn(cluster).anyTimes();
expect(clusters.getClusterById(500L)).andReturn(cluster).anyTimes();
expect(cluster.getClusterId()).andReturn(500L).anyTimes();
expect(cluster.getClusterName()).andReturn("test-cluster").anyTimes();
expect(entity.getArtifactName()).andReturn("test-artifact").anyTimes();
expect(entity.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity.getArtifactData()).andReturn(artifact_data).anyTimes();
expect(entity2.getArtifactName()).andReturn("test-artifact2").anyTimes();
expect(entity2.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity2.getArtifactData()).andReturn(artifact_data2).anyTimes();
expect(dao.findByForeignKeys(eq(foreignKeys))).andReturn(entities).once();
expect(dao.findByNameAndForeignKeys(eq("test-artifact"),eq(foreignKeys))).andReturn(entity).once();
dao.remove(capture(deleteEntityCapture));
expect(dao.findByNameAndForeignKeys(eq("test-artifact2"),eq(foreignKeys))).andReturn(entity2).once();
dao.remove(capture(deleteEntityCapture2));
replay(dao,em,controller,request,clusters,cluster,entity,entity2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.begin().property("Artifacts/cluster_name").equals("test-cluster").end().toPredicate();
RequestStatus response=resourceProvider.deleteResources(predicate);
ArtifactEntity deleteEntity=deleteEntityCapture.getValue();
ArtifactEntity deleteEntity2=deleteEntityCapture2.getValue();
if (deleteEntity.getArtifactName().equals("test-artifact")) {
assertEquals("test-artifact2",deleteEntity2.getArtifactName());
}
else if (deleteEntity.getArtifactName().equals("test-artifact2")) {
assertEquals("test-artifact",deleteEntity2.getArtifactName());
}
else {
fail("Unexpected artifact name: " + deleteEntity.getArtifactName());
}
assertEquals(foreignKeys,deleteEntity.getForeignKeys());
assertEquals(foreignKeys,deleteEntity2.getForeignKeys());
assertEquals(RequestStatus.Status.Complete,response.getStatus());
verify(dao,em,controller,request,clusters,cluster,entity,entity2);
}
BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateResources() throws Exception {
Map requestInfoProps=new HashMap();
requestInfoProps.put(Request.REQUEST_INFO_BODY_PROPERTY,bodyJson);
Capture updateEntityCapture=new Capture();
Capture updateEntityCapture2=new Capture();
Set propertyIds=new HashSet();
TreeMap foreignKeys=new TreeMap();
foreignKeys.put("cluster","500");
List entities=new ArrayList();
entities.add(entity);
entities.add(entity2);
Map artifact_data=Collections.singletonMap("foo","bar");
Map artifact_data2=Collections.singletonMap("foo2","bar2");
Map responseForeignKeys=new HashMap();
responseForeignKeys.put("cluster","500");
Map properties=new HashMap();
properties.put("Artifacts/artifact_name","test-artifact");
properties.put("Artifacts/cluster_name","test-cluster");
properties.put("artifact_data/foo","bar");
properties.put("artifact_data/child/childKey","childValue");
properties.put("artifact_data/child/child2/child2Key","child2Value");
properties.put("artifact_data/child/child2/child3/child4/child4Key","child4Value");
Set> requestProperties=Collections.singleton(properties);
Collection collectionProperties=new HashSet();
properties.put("artifact_data/collection",collectionProperties);
expect(request.getProperties()).andReturn(requestProperties).anyTimes();
expect(request.getRequestInfoProperties()).andReturn(requestInfoProps).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("test-cluster")).andReturn(cluster).anyTimes();
expect(clusters.getClusterById(500L)).andReturn(cluster).anyTimes();
expect(cluster.getClusterId()).andReturn(500L).anyTimes();
expect(cluster.getClusterName()).andReturn("test-cluster").anyTimes();
expect(request.getPropertyIds()).andReturn(propertyIds).anyTimes();
expect(dao.findByForeignKeys(eq(foreignKeys))).andReturn(entities).anyTimes();
expect(entity.getArtifactName()).andReturn("test-artifact").anyTimes();
expect(entity.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity.getArtifactData()).andReturn(artifact_data).anyTimes();
expect(entity2.getArtifactName()).andReturn("test-artifact2").anyTimes();
expect(entity2.getForeignKeys()).andReturn(responseForeignKeys).anyTimes();
expect(entity2.getArtifactData()).andReturn(artifact_data2).anyTimes();
expect(dao.merge(capture(updateEntityCapture))).andReturn(entity).once();
expect(dao.merge(capture(updateEntityCapture2))).andReturn(entity2).once();
replay(dao,em,controller,request,clusters,cluster,entity,entity2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.begin().property("Artifacts/cluster_name").equals("test-cluster").end().toPredicate();
RequestStatus response=resourceProvider.updateResources(request,predicate);
ArtifactEntity updateEntity=updateEntityCapture.getValue();
ArtifactEntity updateEntity2=updateEntityCapture2.getValue();
Gson serializer=new Gson();
ArtifactEntity expected=new ArtifactEntity();
expected.setArtifactData((Map)serializer.>fromJson(bodyJson,Map.class).get("artifact_data"));
assertEquals(expected.getArtifactData(),updateEntity.getArtifactData());
assertEquals(expected.getArtifactData(),updateEntity2.getArtifactData());
if (updateEntity.getArtifactName().equals("test-artifact")) {
assertEquals("test-artifact2",updateEntity2.getArtifactName());
}
else if (updateEntity.getArtifactName().equals("test-artifact2")) {
assertEquals("test-artifact",updateEntity2.getArtifactName());
}
else {
fail("Unexpected artifact name: " + updateEntity.getArtifactName());
}
assertEquals(foreignKeys,updateEntity.getForeignKeys());
assertEquals(foreignKeys,updateEntity2.getForeignKeys());
assertEquals(RequestStatus.Status.Complete,response.getStatus());
verify(dao,em,controller,request,clusters,cluster,entity,entity2);
}
Class: org.apache.ambari.server.controller.internal.BaseBlueprintProcessorTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStackRegisterConditionalDependenciesNoOozieClient() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
AmbariManagementController mockMgmtController=mockSupport.createMock(AmbariManagementController.class);
expect(mockMgmtController.getStackServices(isA(Set.class))).andReturn(Collections.emptySet());
expect(mockMgmtController.getStackLevelConfigurations((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
final DependencyInfo hCatDependency=new TestDependencyInfo("HIVE/HCAT");
final DependencyInfo yarnClientDependency=new TestDependencyInfo("YARN/YARN_CLIENT");
final DependencyInfo tezClientDependency=new TestDependencyInfo("TEZ/TEZ_CLIENT");
final DependencyInfo mapReduceTwoClientDependency=new TestDependencyInfo("YARN/MAPREDUCE2_CLIENT");
mockSupport.replayAll();
Stack testStack=new Stack("HDP","2.1",mockMgmtController){
@Override public Collection getDependenciesForComponent( String component){
if (component.equals("FAKE_MONITORING_SERVER")) {
Set setOfDependencies=new HashSet();
setOfDependencies.add(hCatDependency);
setOfDependencies.add(yarnClientDependency);
setOfDependencies.add(tezClientDependency);
setOfDependencies.add(mapReduceTwoClientDependency);
return setOfDependencies;
}
return Collections.emptySet();
}
/**
* {@inheritDoc}
*/
@Override void registerConditionalDependencies(){
super.registerConditionalDependencies();
Map dependencyConditionalServiceMap=getDependencyConditionalServiceMap();
Collection monitoringDependencies=getDependenciesForComponent("FAKE_MONITORING_SERVER");
for ( DependencyInfo dependency : monitoringDependencies) {
if (dependency.getComponentName().equals("HCAT")) {
dependencyConditionalServiceMap.put(dependency,"HIVE");
}
else if (dependency.getComponentName().equals("OOZIE_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"OOZIE");
}
else if (dependency.getComponentName().equals("YARN_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"YARN");
}
else if (dependency.getComponentName().equals("TEZ_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"TEZ");
}
else if (dependency.getComponentName().equals("MAPREDUCE2_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"MAPREDUCE2");
}
}
}
}
;
assertEquals("Initial conditional dependency map should be empty",0,testStack.getDependencyConditionalServiceMap().size());
testStack.registerConditionalDependencies();
assertEquals("Set of conditional service mappings is an incorrect size",4,testStack.getDependencyConditionalServiceMap().size());
assertEquals("Incorrect service dependency for HCAT","HIVE",testStack.getDependencyConditionalServiceMap().get(hCatDependency));
assertEquals("Incorrect service dependency for YARN_CLIENT","YARN",testStack.getDependencyConditionalServiceMap().get(yarnClientDependency));
assertEquals("Incorrect service dependency for TEZ_CLIENT","TEZ",testStack.getDependencyConditionalServiceMap().get(tezClientDependency));
assertEquals("Incorrect service dependency for MAPREDUCE2_CLIENT","MAPREDUCE2",testStack.getDependencyConditionalServiceMap().get(mapReduceTwoClientDependency));
mockSupport.verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStackRegisterConditionalDependenciesNoMapReduceClient() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
AmbariManagementController mockMgmtController=mockSupport.createMock(AmbariManagementController.class);
expect(mockMgmtController.getStackServices(isA(Set.class))).andReturn(Collections.emptySet());
expect(mockMgmtController.getStackLevelConfigurations((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
final DependencyInfo hCatDependency=new TestDependencyInfo("HIVE/HCAT");
final DependencyInfo yarnClientDependency=new TestDependencyInfo("YARN/YARN_CLIENT");
final DependencyInfo tezClientDependency=new TestDependencyInfo("TEZ/TEZ_CLIENT");
final DependencyInfo oozieClientDependency=new TestDependencyInfo("OOZIE/OOZIE_CLIENT");
mockSupport.replayAll();
Stack testStack=new Stack("HDP","2.1",mockMgmtController){
@Override public Collection getDependenciesForComponent( String component){
if (component.equals("FAKE_MONITORING_SERVER")) {
Set setOfDependencies=new HashSet();
setOfDependencies.add(hCatDependency);
setOfDependencies.add(yarnClientDependency);
setOfDependencies.add(tezClientDependency);
setOfDependencies.add(oozieClientDependency);
return setOfDependencies;
}
return Collections.emptySet();
}
/**
* {@inheritDoc}
*/
@Override void registerConditionalDependencies(){
super.registerConditionalDependencies();
Map dependencyConditionalServiceMap=getDependencyConditionalServiceMap();
Collection monitoringDependencies=getDependenciesForComponent("FAKE_MONITORING_SERVER");
for ( DependencyInfo dependency : monitoringDependencies) {
if (dependency.getComponentName().equals("HCAT")) {
dependencyConditionalServiceMap.put(dependency,"HIVE");
}
else if (dependency.getComponentName().equals("OOZIE_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"OOZIE");
}
else if (dependency.getComponentName().equals("YARN_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"YARN");
}
else if (dependency.getComponentName().equals("TEZ_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"TEZ");
}
else if (dependency.getComponentName().equals("MAPREDUCE2_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"MAPREDUCE2");
}
}
}
}
;
assertEquals("Initial conditional dependency map should be empty",0,testStack.getDependencyConditionalServiceMap().size());
testStack.registerConditionalDependencies();
assertEquals("Set of conditional service mappings is an incorrect size",4,testStack.getDependencyConditionalServiceMap().size());
assertEquals("Incorrect service dependency for HCAT","HIVE",testStack.getDependencyConditionalServiceMap().get(hCatDependency));
assertEquals("Incorrect service dependency for YARN_CLIENT","YARN",testStack.getDependencyConditionalServiceMap().get(yarnClientDependency));
assertEquals("Incorrect service dependency for TEZ_CLIENT","TEZ",testStack.getDependencyConditionalServiceMap().get(tezClientDependency));
assertEquals("Incorrect service dependency for OOZIE_CLIENT","OOZIE",testStack.getDependencyConditionalServiceMap().get(oozieClientDependency));
mockSupport.verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStackRegisterConditionalDependenciesNoHCAT() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
AmbariManagementController mockMgmtController=mockSupport.createMock(AmbariManagementController.class);
expect(mockMgmtController.getStackServices(isA(Set.class))).andReturn(Collections.emptySet());
expect(mockMgmtController.getStackLevelConfigurations((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
final DependencyInfo yarnClientDependency=new TestDependencyInfo("YARN/YARN_CLIENT");
final DependencyInfo tezClientDependency=new TestDependencyInfo("TEZ/TEZ_CLIENT");
final DependencyInfo mapReduceTwoClientDependency=new TestDependencyInfo("YARN/MAPREDUCE2_CLIENT");
final DependencyInfo oozieClientDependency=new TestDependencyInfo("OOZIE/OOZIE_CLIENT");
mockSupport.replayAll();
Stack testStack=new Stack("HDP","2.1",mockMgmtController){
@Override public Collection getDependenciesForComponent( String component){
if (component.equals("FAKE_MONITORING_SERVER")) {
Set setOfDependencies=new HashSet();
setOfDependencies.add(yarnClientDependency);
setOfDependencies.add(tezClientDependency);
setOfDependencies.add(mapReduceTwoClientDependency);
setOfDependencies.add(oozieClientDependency);
return setOfDependencies;
}
return Collections.emptySet();
}
/**
* {@inheritDoc}
*/
@Override void registerConditionalDependencies(){
super.registerConditionalDependencies();
Map dependencyConditionalServiceMap=getDependencyConditionalServiceMap();
Collection monitoringDependencies=getDependenciesForComponent("FAKE_MONITORING_SERVER");
for ( DependencyInfo dependency : monitoringDependencies) {
if (dependency.getComponentName().equals("HCAT")) {
dependencyConditionalServiceMap.put(dependency,"HIVE");
}
else if (dependency.getComponentName().equals("OOZIE_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"OOZIE");
}
else if (dependency.getComponentName().equals("YARN_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"YARN");
}
else if (dependency.getComponentName().equals("TEZ_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"TEZ");
}
else if (dependency.getComponentName().equals("MAPREDUCE2_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"MAPREDUCE2");
}
}
}
}
;
assertEquals("Initial conditional dependency map should be empty",0,testStack.getDependencyConditionalServiceMap().size());
testStack.registerConditionalDependencies();
assertEquals("Set of conditional service mappings is an incorrect size",4,testStack.getDependencyConditionalServiceMap().size());
assertEquals("Incorrect service dependency for YARN_CLIENT","YARN",testStack.getDependencyConditionalServiceMap().get(yarnClientDependency));
assertEquals("Incorrect service dependency for TEZ_CLIENT","TEZ",testStack.getDependencyConditionalServiceMap().get(tezClientDependency));
assertEquals("Incorrect service dependency for MAPREDUCE2_CLIENT","MAPREDUCE2",testStack.getDependencyConditionalServiceMap().get(mapReduceTwoClientDependency));
assertEquals("Incorrect service dependency for OOZIE_CLIENT","OOZIE",testStack.getDependencyConditionalServiceMap().get(oozieClientDependency));
mockSupport.verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStackRegisterConditionalDependenciesNoTezClient() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
AmbariManagementController mockMgmtController=mockSupport.createMock(AmbariManagementController.class);
expect(mockMgmtController.getStackServices(isA(Set.class))).andReturn(Collections.emptySet());
expect(mockMgmtController.getStackLevelConfigurations((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
final DependencyInfo hCatDependency=new TestDependencyInfo("HIVE/HCAT");
final DependencyInfo yarnClientDependency=new TestDependencyInfo("YARN/YARN_CLIENT");
final DependencyInfo mapReduceTwoClientDependency=new TestDependencyInfo("YARN/MAPREDUCE2_CLIENT");
final DependencyInfo oozieClientDependency=new TestDependencyInfo("OOZIE/OOZIE_CLIENT");
mockSupport.replayAll();
Stack testStack=new Stack("HDP","2.1",mockMgmtController){
@Override public Collection getDependenciesForComponent( String component){
if (component.equals("FAKE_MONITORING_SERVER")) {
Set setOfDependencies=new HashSet();
setOfDependencies.add(hCatDependency);
setOfDependencies.add(yarnClientDependency);
setOfDependencies.add(mapReduceTwoClientDependency);
setOfDependencies.add(oozieClientDependency);
return setOfDependencies;
}
return Collections.emptySet();
}
/**
* {@inheritDoc}
*/
@Override void registerConditionalDependencies(){
super.registerConditionalDependencies();
Map dependencyConditionalServiceMap=getDependencyConditionalServiceMap();
Collection monitoringDependencies=getDependenciesForComponent("FAKE_MONITORING_SERVER");
for ( DependencyInfo dependency : monitoringDependencies) {
if (dependency.getComponentName().equals("HCAT")) {
dependencyConditionalServiceMap.put(dependency,"HIVE");
}
else if (dependency.getComponentName().equals("OOZIE_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"OOZIE");
}
else if (dependency.getComponentName().equals("YARN_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"YARN");
}
else if (dependency.getComponentName().equals("TEZ_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"TEZ");
}
else if (dependency.getComponentName().equals("MAPREDUCE2_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"MAPREDUCE2");
}
}
}
}
;
assertEquals("Initial conditional dependency map should be empty",0,testStack.getDependencyConditionalServiceMap().size());
testStack.registerConditionalDependencies();
assertEquals("Set of conditional service mappings is an incorrect size",4,testStack.getDependencyConditionalServiceMap().size());
assertEquals("Incorrect service dependency for HCAT","HIVE",testStack.getDependencyConditionalServiceMap().get(hCatDependency));
assertEquals("Incorrect service dependency for YARN_CLIENT","YARN",testStack.getDependencyConditionalServiceMap().get(yarnClientDependency));
assertEquals("Incorrect service dependency for MAPREDUCE2_CLIENT","MAPREDUCE2",testStack.getDependencyConditionalServiceMap().get(mapReduceTwoClientDependency));
assertEquals("Incorrect service dependency for OOZIE_CLIENT","OOZIE",testStack.getDependencyConditionalServiceMap().get(oozieClientDependency));
mockSupport.verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStackRegisterConditionalDependenciesNoYarnClient() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
AmbariManagementController mockMgmtController=mockSupport.createMock(AmbariManagementController.class);
expect(mockMgmtController.getStackServices(isA(Set.class))).andReturn(Collections.emptySet());
expect(mockMgmtController.getStackLevelConfigurations((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
final DependencyInfo hCatDependency=new TestDependencyInfo("HIVE/HCAT");
final DependencyInfo tezClientDependency=new TestDependencyInfo("TEZ/TEZ_CLIENT");
final DependencyInfo mapReduceTwoClientDependency=new TestDependencyInfo("YARN/MAPREDUCE2_CLIENT");
final DependencyInfo oozieClientDependency=new TestDependencyInfo("OOZIE/OOZIE_CLIENT");
mockSupport.replayAll();
Stack testStack=new Stack("HDP","2.1",mockMgmtController){
@Override public Collection getDependenciesForComponent( String component){
if (component.equals("FAKE_MONITORING_SERVER")) {
Set setOfDependencies=new HashSet();
setOfDependencies.add(hCatDependency);
setOfDependencies.add(tezClientDependency);
setOfDependencies.add(mapReduceTwoClientDependency);
setOfDependencies.add(oozieClientDependency);
return setOfDependencies;
}
return Collections.emptySet();
}
/**
* {@inheritDoc}
*/
@Override void registerConditionalDependencies(){
super.registerConditionalDependencies();
Map dependencyConditionalServiceMap=getDependencyConditionalServiceMap();
Collection monitoringDependencies=getDependenciesForComponent("FAKE_MONITORING_SERVER");
for ( DependencyInfo dependency : monitoringDependencies) {
if (dependency.getComponentName().equals("HCAT")) {
dependencyConditionalServiceMap.put(dependency,"HIVE");
}
else if (dependency.getComponentName().equals("OOZIE_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"OOZIE");
}
else if (dependency.getComponentName().equals("YARN_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"YARN");
}
else if (dependency.getComponentName().equals("TEZ_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"TEZ");
}
else if (dependency.getComponentName().equals("MAPREDUCE2_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"MAPREDUCE2");
}
}
}
}
;
assertEquals("Initial conditional dependency map should be empty",0,testStack.getDependencyConditionalServiceMap().size());
testStack.registerConditionalDependencies();
assertEquals("Set of conditional service mappings is an incorrect size",4,testStack.getDependencyConditionalServiceMap().size());
assertEquals("Incorrect service dependency for HCAT","HIVE",testStack.getDependencyConditionalServiceMap().get(hCatDependency));
assertEquals("Incorrect service dependency for TEZ_CLIENT","TEZ",testStack.getDependencyConditionalServiceMap().get(tezClientDependency));
assertEquals("Incorrect service dependency for MAPREDUCE2_CLIENT","MAPREDUCE2",testStack.getDependencyConditionalServiceMap().get(mapReduceTwoClientDependency));
assertEquals("Incorrect service dependency for OOZIE_CLIENT","OOZIE",testStack.getDependencyConditionalServiceMap().get(oozieClientDependency));
mockSupport.verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStackRegisterConditionalDependencies() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
AmbariManagementController mockMgmtController=mockSupport.createMock(AmbariManagementController.class);
expect(mockMgmtController.getStackServices(isA(Set.class))).andReturn(Collections.emptySet());
expect(mockMgmtController.getStackLevelConfigurations((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
final DependencyInfo hCatDependency=new TestDependencyInfo("HIVE/HCAT");
final DependencyInfo yarnClientDependency=new TestDependencyInfo("YARN/YARN_CLIENT");
final DependencyInfo tezClientDependency=new TestDependencyInfo("TEZ/TEZ_CLIENT");
final DependencyInfo mapReduceTwoClientDependency=new TestDependencyInfo("YARN/MAPREDUCE2_CLIENT");
final DependencyInfo oozieClientDependency=new TestDependencyInfo("OOZIE/OOZIE_CLIENT");
mockSupport.replayAll();
Stack testStack=new Stack("HDP","2.1",mockMgmtController){
@Override public Collection getDependenciesForComponent( String component){
if (component.equals("FAKE_MONITORING_SERVER")) {
Set setOfDependencies=new HashSet();
setOfDependencies.add(hCatDependency);
setOfDependencies.add(yarnClientDependency);
setOfDependencies.add(tezClientDependency);
setOfDependencies.add(mapReduceTwoClientDependency);
setOfDependencies.add(oozieClientDependency);
return setOfDependencies;
}
return Collections.emptySet();
}
/**
* {@inheritDoc}
*/
@Override void registerConditionalDependencies(){
super.registerConditionalDependencies();
Map dependencyConditionalServiceMap=getDependencyConditionalServiceMap();
Collection monitoringDependencies=getDependenciesForComponent("FAKE_MONITORING_SERVER");
for ( DependencyInfo dependency : monitoringDependencies) {
if (dependency.getComponentName().equals("HCAT")) {
dependencyConditionalServiceMap.put(dependency,"HIVE");
}
else if (dependency.getComponentName().equals("OOZIE_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"OOZIE");
}
else if (dependency.getComponentName().equals("YARN_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"YARN");
}
else if (dependency.getComponentName().equals("TEZ_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"TEZ");
}
else if (dependency.getComponentName().equals("MAPREDUCE2_CLIENT")) {
dependencyConditionalServiceMap.put(dependency,"MAPREDUCE2");
}
}
}
}
;
assertEquals("Initial conditional dependency map should be empty",0,testStack.getDependencyConditionalServiceMap().size());
testStack.registerConditionalDependencies();
assertEquals("Set of conditional service mappings is an incorrect size",5,testStack.getDependencyConditionalServiceMap().size());
assertEquals("Incorrect service dependency for HCAT","HIVE",testStack.getDependencyConditionalServiceMap().get(hCatDependency));
assertEquals("Incorrect service dependency for YARN_CLIENT","YARN",testStack.getDependencyConditionalServiceMap().get(yarnClientDependency));
assertEquals("Incorrect service dependency for TEZ_CLIENT","TEZ",testStack.getDependencyConditionalServiceMap().get(tezClientDependency));
assertEquals("Incorrect service dependency for MAPREDUCE2_CLIENT","MAPREDUCE2",testStack.getDependencyConditionalServiceMap().get(mapReduceTwoClientDependency));
assertEquals("Incorrect service dependency for OOZIE_CLIENT","OOZIE",testStack.getDependencyConditionalServiceMap().get(oozieClientDependency));
mockSupport.verifyAll();
}
Class: org.apache.ambari.server.controller.internal.BaseProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCheckPropertyIds(){
Set propertyIds=new HashSet();
propertyIds.add("foo");
propertyIds.add("bar");
propertyIds.add("cat1/prop1");
propertyIds.add("cat2/prop2");
propertyIds.add("cat3/subcat3/prop3");
propertyIds.add("cat4/subcat4/map");
BaseProvider provider=new TestProvider(propertyIds);
assertTrue(provider.checkPropertyIds(propertyIds).isEmpty());
assertTrue(provider.checkPropertyIds(Collections.singleton("cat1")).isEmpty());
assertTrue(provider.checkPropertyIds(Collections.singleton("cat2")).isEmpty());
assertTrue(provider.checkPropertyIds(Collections.singleton("cat3")).isEmpty());
assertTrue(provider.checkPropertyIds(Collections.singleton("cat3/subcat3")).isEmpty());
assertTrue(provider.checkPropertyIds(Collections.singleton("cat4/subcat4/map")).isEmpty());
assertTrue(provider.checkPropertyIds(Collections.singleton("cat4/subcat4/map/key")).isEmpty());
propertyIds.add("badprop");
propertyIds.add("badcat");
Set unsupportedPropertyIds=provider.checkPropertyIds(propertyIds);
assertFalse(unsupportedPropertyIds.isEmpty());
assertEquals(2,unsupportedPropertyIds.size());
assertTrue(unsupportedPropertyIds.contains("badprop"));
assertTrue(unsupportedPropertyIds.contains("badcat"));
}
InternalCallVerifier BooleanVerifier
@Test public void testGetProperties(){
Set propertyIds=new HashSet();
propertyIds.add("foo");
propertyIds.add("bar");
propertyIds.add("cat1/prop1");
propertyIds.add("cat2/prop2");
propertyIds.add("cat3/subcat3/prop3");
BaseProvider provider=new TestProvider(propertyIds);
Set supportedPropertyIds=provider.getPropertyIds();
assertTrue(supportedPropertyIds.containsAll(propertyIds));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetRequestPropertyIds(){
Set providerPropertyIds=new HashSet();
providerPropertyIds.add("foo");
providerPropertyIds.add("bar");
providerPropertyIds.add("cat1/sub1");
BaseProvider provider=new TestProvider(providerPropertyIds);
Request request=PropertyHelper.getReadRequest("foo");
Set requestedPropertyIds=provider.getRequestPropertyIds(request,null);
assertEquals(1,requestedPropertyIds.size());
assertTrue(requestedPropertyIds.contains("foo"));
request=PropertyHelper.getReadRequest("foo","bar");
requestedPropertyIds=provider.getRequestPropertyIds(request,null);
assertEquals(2,requestedPropertyIds.size());
assertTrue(requestedPropertyIds.contains("foo"));
assertTrue(requestedPropertyIds.contains("bar"));
request=PropertyHelper.getReadRequest("foo","baz","bar","cat","cat1/prop1");
requestedPropertyIds=provider.getRequestPropertyIds(request,null);
assertEquals(2,requestedPropertyIds.size());
assertTrue(requestedPropertyIds.contains("foo"));
assertTrue(requestedPropertyIds.contains("bar"));
request=PropertyHelper.getReadRequest("foo","cat1/sub1/prop1");
requestedPropertyIds=provider.getRequestPropertyIds(request,null);
assertEquals(2,requestedPropertyIds.size());
assertTrue(requestedPropertyIds.contains("foo"));
assertTrue(requestedPropertyIds.contains("cat1/sub1/prop1"));
}
InternalCallVerifier EqualityVerifier
@Test public void testComplexMetricParsing(){
Set propertyIds=new HashSet();
propertyIds.add("metrics/flume/$1.substring(0)/CHANNEL/$2.replaceAll(\"[^-]+\",\"\")EventPutSuccessCount/rate/sum");
propertyIds.add("metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsCompleted");
propertyIds.add("metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsFailed");
TestProvider provider=new TestProvider(propertyIds);
Entry entry=provider.getRegexEntry("metrics/flume/flume");
assertEquals("metrics/flume/$1",entry.getKey());
assertEquals("metrics/flume/(\\S*)",entry.getValue().pattern());
entry=provider.getRegexEntry("metrics/flume/flume/CHANNEL");
assertEquals("metrics/flume/$1/CHANNEL",entry.getKey());
assertEquals("metrics/flume/(\\S*)/CHANNEL",entry.getValue().pattern());
entry=provider.getRegexEntry("metrics/flume/flume/CHANNEL/EventPutSuccessCount");
assertEquals("metrics/flume/$1/CHANNEL/$2EventPutSuccessCount",entry.getKey());
assertEquals("metrics/flume/(\\S*)/CHANNEL/(\\S*)EventPutSuccessCount",entry.getValue().pattern());
entry=provider.getRegexEntry("metrics/flume/flume/CHANNEL/EventPutSuccessCount/rate");
assertEquals("metrics/flume/$1/CHANNEL/$2EventPutSuccessCount/rate",entry.getKey());
assertEquals("metrics/flume/(\\S*)/CHANNEL/(\\S*)EventPutSuccessCount/rate",entry.getValue().pattern());
entry=provider.getRegexEntry("metrics/yarn/Queue/root/AppsCompleted");
assertEquals("metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsCompleted",entry.getKey());
assertEquals("metrics/yarn/Queue/(\\S*)/AppsCompleted",entry.getValue().pattern());
entry=provider.getRegexEntry("metrics/yarn/Queue/root/default/AppsCompleted");
assertEquals("metrics/yarn/Queue/$1.replaceAll(\"([.])\",\"/\")/AppsCompleted",entry.getKey());
assertEquals("metrics/yarn/Queue/(\\S*)/AppsCompleted",entry.getValue().pattern());
entry=provider.getRegexEntry("metrics/yarn/Queue/root/default/AppsFailed");
assertEquals("metrics/yarn/Queue/$1.replaceAll(\",q(\\d+)=\",\"/\").substring(1)/AppsFailed",entry.getKey());
assertEquals("metrics/yarn/Queue/(\\S*)/AppsFailed",entry.getValue().pattern());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRegexpMethods(){
Set propertyIds=new HashSet();
String regexp="cat/$1.replaceAll(\\\"([.])\\\",\\\"/\\\")/key";
String propertyId="cat/sub/key";
String regexp2="cat/$1.replaceAll(\\\"([.])\\\",\\\"/\\\")/something/$2/key";
String propertyId2="cat/sub/something/sub2/key";
String incorrectPropertyId="some/property/id";
propertyIds.add(regexp);
propertyIds.add(regexp2);
BaseProvider provider=new TestProvider(propertyIds);
Map.Entry regexEntry=provider.getRegexEntry(propertyId);
assertEquals(regexp,regexEntry.getKey());
assertNull(provider.getRegexEntry(incorrectPropertyId));
assertEquals("sub",provider.getRegexGroups(regexp,propertyId).get(0));
assertEquals("sub2",provider.getRegexGroups(regexp2,propertyId2).get(1));
assertTrue(provider.getRegexGroups(regexp,incorrectPropertyId).isEmpty());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetResourcePropertyWithMaps(){
Set propertyIds=new HashSet();
propertyIds.add("cat1/emptyMapProperty");
propertyIds.add("cat1/mapProperty");
propertyIds.add("cat2/mapMapProperty");
propertyIds.add("cat3/mapProperty3/key2");
propertyIds.add("cat4/mapMapProperty4/subMap1/key3");
propertyIds.add("cat4/mapMapProperty4/subMap2");
Resource resource=new ResourceImpl(Resource.Type.Service);
Map emptyMapProperty=new HashMap();
BaseProvider.setResourceProperty(resource,"cat1/emptyMapProperty",emptyMapProperty,propertyIds);
assertTrue(resource.getPropertiesMap().containsKey("cat1/emptyMapProperty"));
Map mapProperty=new HashMap();
mapProperty.put("key1","value1");
mapProperty.put("key2","value2");
mapProperty.put("key3","value3");
BaseProvider.setResourceProperty(resource,"cat1/mapProperty",mapProperty,propertyIds);
assertNull(resource.getPropertyValue("cat1/mapProperty"));
assertEquals("value1",resource.getPropertyValue("cat1/mapProperty/key1"));
assertEquals("value2",resource.getPropertyValue("cat1/mapProperty/key2"));
assertEquals("value3",resource.getPropertyValue("cat1/mapProperty/key3"));
Map> mapMapProperty=new HashMap>();
Map mapSubProperty1=new HashMap();
mapSubProperty1.put("key1","value11");
mapSubProperty1.put("key2","value12");
mapSubProperty1.put("key3","value13");
mapMapProperty.put("subMap1",mapSubProperty1);
Map mapSubProperty2=new HashMap();
mapSubProperty2.put("key1","value21");
mapSubProperty2.put("key2","value22");
mapSubProperty2.put("key3","value23");
mapMapProperty.put("subMap2",mapSubProperty2);
Map mapSubProperty3=new HashMap();
mapMapProperty.put("subMap3",mapSubProperty3);
BaseProvider.setResourceProperty(resource,"cat2/mapMapProperty",mapMapProperty,propertyIds);
assertNull(resource.getPropertyValue("cat2/mapMapProperty"));
assertNull(resource.getPropertyValue("cat2/mapMapProperty/subMap1"));
assertNull(resource.getPropertyValue("cat2/mapMapProperty/subMap2"));
assertTrue(resource.getPropertiesMap().containsKey("cat2/mapMapProperty/subMap3"));
assertEquals("value11",resource.getPropertyValue("cat2/mapMapProperty/subMap1/key1"));
assertEquals("value12",resource.getPropertyValue("cat2/mapMapProperty/subMap1/key2"));
assertEquals("value13",resource.getPropertyValue("cat2/mapMapProperty/subMap1/key3"));
assertEquals("value21",resource.getPropertyValue("cat2/mapMapProperty/subMap2/key1"));
assertEquals("value22",resource.getPropertyValue("cat2/mapMapProperty/subMap2/key2"));
assertEquals("value23",resource.getPropertyValue("cat2/mapMapProperty/subMap2/key3"));
Map mapProperty3=new HashMap();
mapProperty3.put("key1","value1");
mapProperty3.put("key2","value2");
mapProperty3.put("key3","value3");
BaseProvider.setResourceProperty(resource,"cat3/mapProperty3",mapProperty3,propertyIds);
assertNull(resource.getPropertyValue("cat3/mapProperty3"));
assertNull(resource.getPropertyValue("cat3/mapProperty3/key1"));
assertEquals("value2",resource.getPropertyValue("cat3/mapProperty3/key2"));
assertNull(resource.getPropertyValue("cat3/mapProperty3/key3"));
Map> mapMapProperty4=new HashMap>();
mapMapProperty4.put("subMap1",mapSubProperty1);
mapMapProperty4.put("subMap2",mapSubProperty2);
BaseProvider.setResourceProperty(resource,"cat4/mapMapProperty4",mapMapProperty4,propertyIds);
assertNull(resource.getPropertyValue("cat4/mapMapProperty4"));
assertNull(resource.getPropertyValue("cat4/mapMapProperty4/subMap1"));
assertNull(resource.getPropertyValue("cat4/mapMapProperty4/subMap2"));
assertNull(resource.getPropertyValue("cat4/mapMapProperty4/subMap1/key1"));
assertNull(resource.getPropertyValue("cat4/mapMapProperty4/subMap1/key2"));
assertEquals("value13",resource.getPropertyValue("cat4/mapMapProperty4/subMap1/key3"));
assertEquals("value21",resource.getPropertyValue("cat4/mapMapProperty4/subMap2/key1"));
assertEquals("value22",resource.getPropertyValue("cat4/mapMapProperty4/subMap2/key2"));
assertEquals("value23",resource.getPropertyValue("cat4/mapMapProperty4/subMap2/key3"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetResourceProperty(){
Set propertyIds=new HashSet();
propertyIds.add("p1");
propertyIds.add("foo");
propertyIds.add("cat1/foo");
propertyIds.add("cat2/bar");
propertyIds.add("cat2/baz");
propertyIds.add("cat3/sub1/bam");
propertyIds.add("cat4/sub2/sub3/bat");
propertyIds.add("cat5/sub5");
Resource resource=new ResourceImpl(Resource.Type.Service);
assertNull(resource.getPropertyValue("foo"));
BaseProvider.setResourceProperty(resource,"foo","value1",propertyIds);
assertEquals("value1",resource.getPropertyValue("foo"));
BaseProvider.setResourceProperty(resource,"cat2/bar","value2",propertyIds);
assertEquals("value2",resource.getPropertyValue("cat2/bar"));
assertNull(resource.getPropertyValue("unsupported"));
BaseProvider.setResourceProperty(resource,"unsupported","valueX",propertyIds);
assertNull(resource.getPropertyValue("unsupported"));
BaseProvider.setResourceProperty(resource,"cat5/sub5/prop5","value5",propertyIds);
assertEquals("value5",resource.getPropertyValue("cat5/sub5/prop5"));
BaseProvider.setResourceProperty(resource,"cat5/sub5/sub5a/prop5a","value5",propertyIds);
assertEquals("value5",resource.getPropertyValue("cat5/sub5/sub5a/prop5a"));
BaseProvider.setResourceProperty(resource,"cat5/sub7/unsupported","valueX",propertyIds);
assertNull(resource.getPropertyValue("cat5/sub7/unsupported"));
}
Class: org.apache.ambari.server.controller.internal.BlueprintConfigurationProcessorTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__defaultValues___YAML() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("storm.zookeeper.servers","['localhost']");
properties.put("storm-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("group3",hgComponents3,hosts3);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("storm-site").get("storm.zookeeper.servers");
assertTrue(updatedVal.startsWith("["));
assertTrue(updatedVal.endsWith("]"));
updatedVal=updatedVal.replaceAll("[\\[\\]]","");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("'testhost'");
expectedHosts.add("'testhost2'");
expectedHosts.add("'testhost2a'");
expectedHosts.add("'testhost2b'");
assertEquals(4,hosts.length);
for ( String host : hosts) {
assertTrue(expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__exportedValue() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("yarn.resourcemanager.hostname","%HOSTGROUP::group1%");
properties.put("yarn-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("yarn-site").get("yarn.resourcemanager.hostname");
assertEquals("testhost",updatedVal);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRequiredHostGroups___invalidComponentCountOfZero() throws Exception {
Map> properties=new HashMap>();
Map coreSiteMap=new HashMap();
properties.put("core-site",coreSiteMap);
coreSiteMap.put("fs.defaultFS","localhost");
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
expect(stack.getCardinality("NAMENODE")).andReturn(new Cardinality("1")).anyTimes();
Collection hgComponents1=new HashSet();
hgComponents1.add("HIVE_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents1,Collections.singleton("host1"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("host2"));
Collection hostGroups=new ArrayList();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Collection requiredGroups=updater.getRequiredHostGroups();
assertEquals(0,requiredGroups.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_DBHostProperty__defaultValue() throws Exception {
Map> properties=new HashMap>();
Map hiveSiteProps=new HashMap();
hiveSiteProps.put("javax.jdo.option.ConnectionURL","jdbc:mysql://localhost/hive?createDatabaseIfNotExist=true");
Map hiveEnvProps=new HashMap();
hiveEnvProps.put("hive_database","New MySQL Database");
properties.put("hive-site",hiveSiteProps);
properties.put("hive-env",hiveEnvProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
hgComponents.add("MYSQL_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hive-site").get("javax.jdo.option.ConnectionURL");
assertEquals("jdbc:mysql://testhost/hive?createDatabaseIfNotExist=true",updatedVal);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__exportedValue_WithPort_UsingMinusSymbolInHostGroupName() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("yarn.resourcemanager.hostname","%HOSTGROUP::os-amb-r6-secha-1427972156-hbaseha-3-6%:2180");
properties.put("yarn-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("os-amb-r6-secha-1427972156-hbaseha-3-6",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("yarn-site").get("yarn.resourcemanager.hostname");
assertEquals("testhost:2180",updatedVal);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__exportedValues___YAML() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("storm.zookeeper.servers","['%HOSTGROUP::group1%:9090','%HOSTGROUP::group2%:9091']");
typeProps.put("nimbus.seeds","[%HOSTGROUP::group1%, %HOSTGROUP::group4%]");
properties.put("storm-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
hgComponents.add("NIMBUS");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
hgComponents2.add("NIMBUS");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("group3",hgComponents3,hosts3);
Collection hgComponents4=new HashSet();
hgComponents4.add("NIMBUS");
Set hosts4=new HashSet();
hosts4.add("testhost4");
TestHostGroup group4=new TestHostGroup("group4",hgComponents4,hosts4);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
hostGroups.add(group4);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("storm-site").get("storm.zookeeper.servers");
assertTrue(updatedVal.startsWith("["));
assertTrue(updatedVal.endsWith("]"));
updatedVal=updatedVal.replaceAll("[\\[\\]]","");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("'testhost:9090'");
expectedHosts.add("'testhost2:9091'");
expectedHosts.add("'testhost2a:9091'");
expectedHosts.add("'testhost2b:9091'");
assertEquals(4,hosts.length);
for ( String host : hosts) {
assertTrue(expectedHosts.contains(host));
expectedHosts.remove(host);
}
String updatedNimbusSeedsVal=topology.getConfiguration().getFullProperties().get("storm-site").get("nimbus.seeds");
assertTrue("Updated YAML value should start with bracket",updatedNimbusSeedsVal.startsWith("["));
assertTrue("Updated YAML value should end with bracket",updatedNimbusSeedsVal.endsWith("]"));
updatedNimbusSeedsVal=updatedNimbusSeedsVal.replaceAll("[\\[\\]]","");
String[] nimbusHosts=updatedNimbusSeedsVal.split(",");
Collection expectedNimbusHosts=new HashSet();
expectedNimbusHosts.add("testhost");
expectedNimbusHosts.add("testhost4");
assertEquals("Incorrect number of hosts found in updated Nimbus config property",2,nimbusHosts.length);
for ( String host : nimbusHosts) {
assertTrue("Expected Nimbus host = " + host + " not found in nimbus.seeds property value",expectedNimbusHosts.contains(host));
expectedHosts.remove(host);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithPlainFlowStyleFormatSingleValue() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null,BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
String originalValue="test_value";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="[test_value]";
assertEquals(expectedValue,newValue);
}
InternalCallVerifier EqualityVerifier
@Test public void testAtlasHiveProperties() throws Exception {
Map> properties=new HashMap>();
Map atlasProperties=new HashMap();
properties.put("application-properties",atlasProperties);
atlasProperties.put("atlas.enableTLS","false");
atlasProperties.put("atlas.server.bind.address","localhost");
atlasProperties.put("atlas.server.http.port","21000");
Map atlasEnv=new HashMap();
properties.put("atlas-env",atlasEnv);
Map hiveProperties=new HashMap();
hiveProperties.put("hive.exec.post.hooks","");
hiveProperties.put("atlas.cluster.name","primary");
hiveProperties.put("atlas.rest.address","http://localhost:21000");
properties.put("hive-site",hiveProperties);
Map> parentProperties=new HashMap>();
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
Collection hgComponents1=new HashSet();
hgComponents1.add("ATLAS_SERVER");
hgComponents1.add("HIVE_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents1,Collections.singleton("host1"));
Collection hostGroups=Collections.singletonList(group1);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
configProcessor.doUpdateForClusterCreate();
assertEquals("org.apache.atlas.hive.hook.HiveHook",clusterConfig.getPropertyValue("hive-site","hive.exec.post.hooks"));
assertEquals("1",clusterConfig.getPropertyValue("hive-site","atlas.cluster.name"));
assertEquals("http://host1:21000",clusterConfig.getPropertyValue("hive-site","atlas.rest.address"));
assertEquals("host1",clusterConfig.getPropertyValue("application-properties","atlas.server.bind.address"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__exportedValues___withPorts_UsingMinusSymbolInHostGroupName() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("ha.zookeeper.quorum","%HOSTGROUP::os-amb-r6-secha-1427972156-hbaseha-3-6%:2181,%HOSTGROUP::os-amb-r6-secha-1427972156-hbaseha-3-5%:2181,%HOSTGROUP::os-amb-r6-secha-1427972156-hbaseha-3-7%:2181");
properties.put("core-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
TestHostGroup group1=new TestHostGroup("os-amb-r6-secha-1427972156-hbaseha-3-6",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("os-amb-r6-secha-1427972156-hbaseha-3-5",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("os-amb-r6-secha-1427972156-hbaseha-3-7",hgComponents3,hosts3);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("core-site").get("ha.zookeeper.quorum");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("testhost:2181");
expectedHosts.add("testhost2:2181");
expectedHosts.add("testhost2a:2181");
expectedHosts.add("testhost2b:2181");
expectedHosts.add("testhost3:2181");
expectedHosts.add("testhost3a:2181");
assertEquals(6,hosts.length);
for ( String host : hosts) {
assertTrue("Expected host :" + host + "was not included in the multi-server list in this property.",expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithSingleQuoteFlowStyleFormatMultiValueInSquareBrackets() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
String originalValue="['test_value1','test_value2']";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="['test_value1','test_value2']";
assertEquals(expectedValue,newValue);
}
InternalCallVerifier EqualityVerifier
@Test public void testMultipleHostTopologyUpdaterWithYamlPropertySingleHostValue() throws Exception {
String component="test_component";
BlueprintConfigurationProcessor.MultipleHostTopologyUpdater mhtu=new BlueprintConfigurationProcessor.MultipleHostTopologyUpdater(component);
String propertyOriginalValue1="['%HOSTGROUP::group_1%']";
String propertyOriginalValue2="[%HOSTGROUP::group_1%]";
String updatedValue1=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue1,null,ImmutableList.of("host1:100"));
String updatedValue2=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue2,null,ImmutableList.of("host1:100"));
assertEquals("host1:100",updatedValue1);
assertEquals("host1:100",updatedValue2);
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithSingleQuoteFlowStyleFormatMultiValue() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
String originalValue="test_value1,test_value2";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="['test_value1','test_value2']";
assertEquals(expectedValue,newValue);
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithPlainFlowStyleFormatMultiValue() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null,BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
String originalValue="test_value1,test_value2";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="[test_value1,test_value2]";
assertEquals(expectedValue,newValue);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterVerifyRetrySettingsCustomized() throws Exception {
Map> configProperties=new HashMap>();
HashMap clusterEnvProperties=new HashMap();
configProperties.put("cluster-env",clusterEnvProperties);
clusterEnvProperties.put("command_retry_enabled","false");
clusterEnvProperties.put("commands_to_retry","TEST");
clusterEnvProperties.put("command_retry_max_time_in_sec","1");
Configuration clusterConfig=new Configuration(configProperties,Collections.>>emptyMap());
TestHostGroup testHostGroup=new TestHostGroup("test-host-group-one",Collections.emptySet(),Collections.emptySet());
ClusterTopology topology=createClusterTopology(bp,clusterConfig,Collections.singleton(testHostGroup));
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Set updatedConfigTypes=updater.doUpdateForClusterCreate();
assertEquals("Incorrect number of properties added to cluster-env for retry",3,clusterEnvProperties.size());
assertEquals("command_retry_enabled was not set to the expected default","false",clusterEnvProperties.get("command_retry_enabled"));
assertEquals("commands_to_retry was not set to the expected default","TEST",clusterEnvProperties.get("commands_to_retry"));
assertEquals("command_retry_max_time_in_sec was not set to the expected default","1",clusterEnvProperties.get("command_retry_max_time_in_sec"));
assertEquals("Incorrect number of config types updated",0,updatedConfigTypes.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithSingleQuoteFlowStyleFormatSingleValue() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
String originalValue="test_value";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="['test_value']";
assertEquals(expectedValue,newValue);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRecommendConfiguration_applyStackDefaultsOnly() throws Exception {
final String expectedHostName="c6401.apache.ambari.org";
final String expectedPortNum="808080";
final String expectedHostGroupName="host_group_1";
Map> properties=new HashMap>();
Map coreSiteMap=new HashMap();
properties.put("core-site",coreSiteMap);
coreSiteMap.put("fs.default.name",expectedHostName + ":" + expectedPortNum);
coreSiteMap.put("fs.defaultFS","hdfs://" + expectedHostName + ":"+ expectedPortNum);
coreSiteMap.put("fs.stackDefault.key2","dummyValue");
Map dummySiteMap=new HashMap();
properties.put("dummy-site",dummySiteMap);
dummySiteMap.put("dummy.prop","dummyValue2");
Map> parentProperties=new HashMap>();
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton(expectedHostGroupName));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
Configuration parentConfig=new Configuration(parentProperties,Collections.>>emptyMap(),createStackDefaults());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentConfig);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
topology.getAdvisedConfigurations().putAll(createAdvisedConfigMap());
topology.setConfigRecommendationStrategy(ConfigRecommendationStrategy.ONLY_STACK_DEFAULTS_APPLY);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
reset(stack);
expect(stack.getConfiguration(bp.getServices())).andReturn(createStackDefaults()).anyTimes();
replay(stack);
Set configTypeUpdated=configProcessor.doUpdateForClusterCreate();
assertEquals(expectedHostName + ":" + expectedPortNum,clusterConfig.getPropertyValue("core-site","fs.default.name"));
assertEquals("stackDefaultUpgraded",clusterConfig.getPropertyValue("core-site","fs.stackDefault.key1"));
assertNull(clusterConfig.getPropertyValue("core-site","fs.stackDefault.key2"));
assertNull(clusterConfig.getPropertyValue("core-site","fs.notStackDefault"));
assertTrue(configTypeUpdated.contains("dummy-site"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__defaultValue() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
Map typeProps2=new HashMap();
typeProps.put("yarn.resourcemanager.hostname","localhost");
typeProps2.put("oozie_heapsize","1024");
typeProps2.put("oozie_permsize","128");
properties.put("oozie-env",typeProps2);
properties.put("yarn-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection group1Components=new HashSet();
group1Components.add("NAMENODE");
group1Components.add("SECONDARY_NAMENODE");
group1Components.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",group1Components,Collections.singleton("testhost"));
Collection group2Components=new HashSet();
group2Components.add("DATANODE");
group2Components.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",group2Components,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Set configTypesUpdated=updater.doUpdateForClusterCreate();
String updatedVal=properties.get("yarn-site").get("yarn.resourcemanager.hostname");
assertEquals("testhost",updatedVal);
String updatedVal1=properties.get("oozie-env").get("oozie_heapsize");
assertEquals("1024m",updatedVal1);
String updatedVal2=properties.get("oozie-env").get("oozie_permsize");
assertEquals("128m",updatedVal2);
assertEquals("Incorrect number of config types updated",3,configTypesUpdated.size());
assertTrue("Expected config type not updated",configTypesUpdated.contains("oozie-env"));
assertTrue("Expected config type not updated",configTypesUpdated.contains("yarn-site"));
assertTrue("Expected config type not updated",configTypesUpdated.contains("cluster-env"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_Storm_Nimbus_HA_Enabled__FQDN_ValuesSpecified_YAML() throws Exception {
final String expectedValue="[c6401.ambari.apache.org, c6402.ambari.apache.org]";
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("nimbus.seeds",expectedValue);
properties.put("storm-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NIMBUS");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("NIMBUS");
Set hosts2=new HashSet();
hosts2.add("testhost2");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("storm-site").get("nimbus.seeds");
assertEquals("nimbus.seeds property should not be updated when FQDNs are specified in configuration",expectedValue,updatedVal);
}
InternalCallVerifier EqualityVerifier
@Test public void testAtlasHiveProperties2() throws Exception {
Map> properties=new HashMap>();
Map atlasProperties=new HashMap();
properties.put("application-properties",atlasProperties);
atlasProperties.put("atlas.enableTLS","true");
atlasProperties.put("atlas.server.bind.address","localhost");
atlasProperties.put("atlas.server.https.port","99999");
Map atlasEnv=new HashMap();
properties.put("atlas-env",atlasEnv);
Map hiveProperties=new HashMap();
hiveProperties.put("hive.exec.post.hooks","foo");
hiveProperties.put("atlas.cluster.name","userSpecified");
hiveProperties.put("atlas.rest.address","http://localhost:21000");
properties.put("hive-site",hiveProperties);
Map> parentProperties=new HashMap>();
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
Collection hgComponents1=new HashSet();
hgComponents1.add("ATLAS_SERVER");
hgComponents1.add("HIVE_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents1,Collections.singleton("host1"));
Collection hostGroups=Collections.singletonList(group1);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
configProcessor.doUpdateForClusterCreate();
assertEquals("foo,org.apache.atlas.hive.hook.HiveHook",clusterConfig.getPropertyValue("hive-site","hive.exec.post.hooks"));
assertEquals("userSpecified",clusterConfig.getPropertyValue("hive-site","atlas.cluster.name"));
assertEquals("https://host1:99999",clusterConfig.getPropertyValue("hive-site","atlas.rest.address"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRecommendConfiguration_neverApply() throws Exception {
final String expectedHostName="c6401.apache.ambari.org";
final String expectedPortNum="808080";
final String expectedHostGroupName="host_group_1";
Map> properties=new HashMap>();
Map coreSiteMap=new HashMap();
properties.put("core-site",coreSiteMap);
coreSiteMap.put("fs.default.name",expectedHostName + ":" + expectedPortNum);
coreSiteMap.put("fs.defaultFS","hdfs://" + expectedHostName + ":"+ expectedPortNum);
coreSiteMap.put("fs.stackDefault.key2","dummyValue");
Map> parentProperties=new HashMap>();
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton(expectedHostGroupName));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap(),createStackDefaults());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
topology.getAdvisedConfigurations().putAll(createAdvisedConfigMap());
topology.setConfigRecommendationStrategy(ConfigRecommendationStrategy.NEVER_APPLY);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
configProcessor.doUpdateForClusterCreate();
assertEquals(expectedHostName + ":" + expectedPortNum,clusterConfig.getPropertyValue("core-site","fs.default.name"));
assertNull(clusterConfig.getPropertyValue("core-site","fs.notStackDefault"));
assertEquals("stackDefaultValue1",clusterConfig.getPropertyValue("core-site","fs.stackDefault.key1"));
assertNotNull(clusterConfig.getPropertyValue("core-site","fs.stackDefault.key2"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_MProperty__defaultValues() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("hbase_master_heapsize","512m");
properties.put("hbase-env",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hbase-env").get("hbase_master_heapsize");
assertEquals("512m",updatedVal);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_MProperty__missingM() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("hbase_master_heapsize","512");
properties.put("hbase-env",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hbase-env").get("hbase_master_heapsize");
assertEquals("512m",updatedVal);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__defaultValues() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("hbase.zookeeper.quorum","localhost");
properties.put("hbase-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("group3",hgComponents3,hosts3);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hbase-site").get("hbase.zookeeper.quorum");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("testhost");
expectedHosts.add("testhost2");
expectedHosts.add("testhost2a");
expectedHosts.add("testhost2b");
assertEquals(4,hosts.length);
for ( String host : hosts) {
assertTrue(expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__defaultValue__WithPort() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("fs.defaultFS","localhost:5050");
properties.put("core-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("core-site").get("fs.defaultFS");
assertEquals("testhost:5050",updatedVal);
}
APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterWithNameNodeHAEnabled() throws Exception {
final String expectedNameService="mynameservice";
final String expectedHostName="c6401.apache.ambari.org";
final String expectedHostNameTwo="serverTwo";
final String expectedPortNum="808080";
final String expectedNodeOne="nn1";
final String expectedNodeTwo="nn2";
final String expectedHostGroupName="host_group_1";
Map> properties=new HashMap>();
Map hdfsSiteProperties=new HashMap();
Map hbaseSiteProperties=new HashMap();
Map hadoopEnvProperties=new HashMap();
Map coreSiteProperties=new HashMap();
Map accumuloSiteProperties=new HashMap();
properties.put("hdfs-site",hdfsSiteProperties);
properties.put("hadoop-env",hadoopEnvProperties);
properties.put("core-site",coreSiteProperties);
properties.put("hbase-site",hbaseSiteProperties);
properties.put("accumulo-site",accumuloSiteProperties);
hdfsSiteProperties.put("dfs.nameservices",expectedNameService);
hdfsSiteProperties.put("dfs.ha.namenodes.mynameservice",expectedNodeOne + ", " + expectedNodeTwo);
hdfsSiteProperties.put("dfs.namenode.https-address." + expectedNameService + "."+ expectedNodeOne,createExportedAddress(expectedPortNum,expectedHostGroupName));
hdfsSiteProperties.put("dfs.namenode.https-address." + expectedNameService + "."+ expectedNodeTwo,createExportedAddress(expectedPortNum,expectedHostGroupName));
hdfsSiteProperties.put("dfs.namenode.http-address." + expectedNameService + "."+ expectedNodeOne,createExportedAddress(expectedPortNum,expectedHostGroupName));
hdfsSiteProperties.put("dfs.namenode.http-address." + expectedNameService + "."+ expectedNodeTwo,createExportedAddress(expectedPortNum,expectedHostGroupName));
hdfsSiteProperties.put("dfs.namenode.rpc-address." + expectedNameService + "."+ expectedNodeOne,createExportedAddress(expectedPortNum,expectedHostGroupName));
hdfsSiteProperties.put("dfs.namenode.rpc-address." + expectedNameService + "."+ expectedNodeTwo,createExportedAddress(expectedPortNum,expectedHostGroupName));
hdfsSiteProperties.put("dfs.secondary.http.address","localhost:8080");
hdfsSiteProperties.put("dfs.namenode.secondary.http-address","localhost:8080");
hdfsSiteProperties.put("dfs.namenode.http-address","localhost:8080");
hdfsSiteProperties.put("dfs.namenode.https-address","localhost:8081");
hdfsSiteProperties.put("dfs.namenode.rpc-address","localhost:8082");
coreSiteProperties.put("fs.defaultFS","hdfs://" + expectedNameService);
hbaseSiteProperties.put("hbase.rootdir","hdfs://" + expectedNameService + "/hbase/test/root/dir");
accumuloSiteProperties.put("instance.volumes","hdfs://" + expectedNameService + "/accumulo/test/instance/volumes");
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
TestHostGroup group1=new TestHostGroup(expectedHostGroupName,hgComponents,Collections.singleton(expectedHostName));
Collection hgComponents2=new HashSet();
hgComponents2.add("NAMENODE");
TestHostGroup group2=new TestHostGroup("host-group-2",hgComponents2,Collections.singleton(expectedHostNameTwo));
Collection hostGroups=new ArrayList();
hostGroups.add(group1);
hostGroups.add(group2);
expect(stack.getCardinality("NAMENODE")).andReturn(new Cardinality("1-2")).anyTimes();
expect(stack.getCardinality("SECONDARY_NAMENODE")).andReturn(new Cardinality("1")).anyTimes();
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Set updatedConfigTypes=updater.doUpdateForClusterCreate();
assertEquals("HTTPS address HA property not properly exported",expectedHostName + ":" + expectedPortNum,hdfsSiteProperties.get("dfs.namenode.https-address." + expectedNameService + "."+ expectedNodeOne));
assertEquals("HTTPS address HA property not properly exported",expectedHostName + ":" + expectedPortNum,hdfsSiteProperties.get("dfs.namenode.https-address." + expectedNameService + "."+ expectedNodeTwo));
assertEquals("HTTPS address HA property not properly exported",expectedHostName + ":" + expectedPortNum,hdfsSiteProperties.get("dfs.namenode.http-address." + expectedNameService + "."+ expectedNodeOne));
assertEquals("HTTPS address HA property not properly exported",expectedHostName + ":" + expectedPortNum,hdfsSiteProperties.get("dfs.namenode.http-address." + expectedNameService + "."+ expectedNodeTwo));
assertEquals("HTTPS address HA property not properly exported",expectedHostName + ":" + expectedPortNum,hdfsSiteProperties.get("dfs.namenode.rpc-address." + expectedNameService + "."+ expectedNodeOne));
assertEquals("HTTPS address HA property not properly exported",expectedHostName + ":" + expectedPortNum,hdfsSiteProperties.get("dfs.namenode.rpc-address." + expectedNameService + "."+ expectedNodeTwo));
String initialActiveHost=hadoopEnvProperties.get("dfs_ha_initial_namenode_active");
String expectedStandbyHost=null;
if (initialActiveHost.equals(expectedHostName)) {
expectedStandbyHost=expectedHostNameTwo;
}
else if (initialActiveHost.equals(expectedHostNameTwo)) {
expectedStandbyHost=expectedHostName;
}
else {
fail("Active Namenode hostname was not set correctly");
}
assertEquals("Standby Namenode hostname was not set correctly",expectedStandbyHost,hadoopEnvProperties.get("dfs_ha_initial_namenode_standby"));
assertEquals("fs.defaultFS should not be modified by cluster update when NameNode HA is enabled.","hdfs://" + expectedNameService,coreSiteProperties.get("fs.defaultFS"));
assertEquals("hbase.rootdir should not be modified by cluster update when NameNode HA is enabled.","hdfs://" + expectedNameService + "/hbase/test/root/dir",hbaseSiteProperties.get("hbase.rootdir"));
assertEquals("instance.volumes should not be modified by cluster update when NameNode HA is enabled.","hdfs://" + expectedNameService + "/accumulo/test/instance/volumes",accumuloSiteProperties.get("instance.volumes"));
assertFalse("dfs.namenode.http-address should have been filtered out of this HA configuration",hdfsSiteProperties.containsKey("dfs.namenode.http-address"));
assertFalse("dfs.namenode.https-address should have been filtered out of this HA configuration",hdfsSiteProperties.containsKey("dfs.namenode.https-address"));
assertFalse("dfs.namenode.rpc-address should have been filtered out of this HA configuration",hdfsSiteProperties.containsKey("dfs.namenode.rpc-address"));
assertEquals("Incorrect number of updated config types returned, set = " + updatedConfigTypes,3,updatedConfigTypes.size());
assertTrue("Expected config type not found in updated set",updatedConfigTypes.contains("cluster-env"));
assertTrue("Expected config type not found in updated set",updatedConfigTypes.contains("hdfs-site"));
assertTrue("Expected config type not found in updated set",updatedConfigTypes.contains("hadoop-env"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__MissingOptionalComponent() throws Exception {
final String expectedHostName="localhost";
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("yarn.timeline-service.address",expectedHostName);
properties.put("yarn-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection group1Components=new HashSet();
group1Components.add("NAMENODE");
group1Components.add("SECONDARY_NAMENODE");
group1Components.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",group1Components,Collections.singleton("testhost"));
Collection group2Components=new HashSet();
group2Components.add("DATANODE");
group2Components.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",group2Components,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
expect(stack.getCardinality("APP_TIMELINE_SERVER")).andReturn(new Cardinality("0-1")).anyTimes();
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("yarn-site").get("yarn.timeline-service.address");
assertEquals("Timeline Server config property should not have been updated",expectedHostName,updatedVal);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_DBHostProperty__external() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("javax.jdo.option.ConnectionURL","jdbc:mysql://myHost.com/hive?createDatabaseIfNotExist=true");
typeProps.put("hive_database","Existing MySQL Database");
properties.put("hive-env",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hive-env").get("javax.jdo.option.ConnectionURL");
assertEquals("jdbc:mysql://myHost.com/hive?createDatabaseIfNotExist=true",updatedVal);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterWithNameNodeHANotEnabled() throws Exception {
final String expectedHostName="c6401.apache.ambari.org";
final String expectedHostNameTwo="serverTwo";
final String expectedHostGroupName="host_group_1";
Map> properties=new HashMap>();
Map hdfsSiteProperties=new HashMap();
Map hbaseSiteProperties=new HashMap();
Map hadoopEnvProperties=new HashMap();
Map coreSiteProperties=new HashMap();
Map accumuloSiteProperties=new HashMap();
properties.put("hdfs-site",hdfsSiteProperties);
properties.put("hadoop-env",hadoopEnvProperties);
properties.put("core-site",coreSiteProperties);
properties.put("hbase-site",hbaseSiteProperties);
properties.put("accumulo-site",accumuloSiteProperties);
hdfsSiteProperties.put("dfs.secondary.http.address","localhost:8080");
hdfsSiteProperties.put("dfs.namenode.secondary.http-address","localhost:8080");
hdfsSiteProperties.put("dfs.namenode.http-address","localhost:8080");
hdfsSiteProperties.put("dfs.namenode.https-address","localhost:8081");
hdfsSiteProperties.put("dfs.namenode.rpc-address","localhost:8082");
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
TestHostGroup group1=new TestHostGroup(expectedHostGroupName,hgComponents,Collections.singleton(expectedHostName));
Collection hgComponents2=new HashSet();
TestHostGroup group2=new TestHostGroup("host-group-2",hgComponents2,Collections.singleton(expectedHostNameTwo));
Collection hostGroups=new ArrayList();
hostGroups.add(group1);
hostGroups.add(group2);
expect(stack.getCardinality("NAMENODE")).andReturn(new Cardinality("1-2")).anyTimes();
expect(stack.getCardinality("SECONDARY_NAMENODE")).andReturn(new Cardinality("1")).anyTimes();
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Set updatedConfigTypes=updater.doUpdateForClusterCreate();
assertTrue("dfs.namenode.http-address should have been included in this HA configuration",hdfsSiteProperties.containsKey("dfs.namenode.http-address"));
assertTrue("dfs.namenode.https-address should have been included in this HA configuration",hdfsSiteProperties.containsKey("dfs.namenode.https-address"));
assertTrue("dfs.namenode.rpc-address should have been included in this HA configuration",hdfsSiteProperties.containsKey("dfs.namenode.rpc-address"));
assertEquals("Incorrect number of updated config types returned, set = " + updatedConfigTypes,2,updatedConfigTypes.size());
assertTrue("Expected config type 'cluster-env' not found in updated set",updatedConfigTypes.contains("cluster-env"));
assertTrue("Expected config type 'hdfs-site' not found in updated set",updatedConfigTypes.contains("hdfs-site"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_Storm_Nimbus_HA_Enabled__defaultValues_YAML() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("nimbus.seeds","localhost");
properties.put("storm-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NIMBUS");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("NIMBUS");
Set hosts2=new HashSet();
hosts2.add("testhost2");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("storm-site").get("nimbus.seeds");
assertTrue("Updated YAML value should start with bracket",updatedVal.startsWith("["));
assertTrue("Updated YAML value should end with bracket",updatedVal.endsWith("]"));
updatedVal=updatedVal.replaceAll("[\\[\\]]","");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("testhost");
expectedHosts.add("testhost2");
assertEquals("Incorrect number of hosts found in updated Nimbus config property",2,hosts.length);
for ( String host : hosts) {
assertTrue("Expected host name = " + host + " not found in updated Nimbus config property",expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__exportedValues___withPorts() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("templeton.zookeeper.hosts","%HOSTGROUP::group1%:9090,%HOSTGROUP::group2%:9091");
properties.put("webhcat-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("group3",hgComponents3,hosts3);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("webhcat-site").get("templeton.zookeeper.hosts");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("testhost:9090");
expectedHosts.add("testhost2:9091");
expectedHosts.add("testhost2a:9091");
expectedHosts.add("testhost2b:9091");
assertEquals(4,hosts.length);
for ( String host : hosts) {
assertTrue(expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__defaultValues___withPorts() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("templeton.zookeeper.hosts","localhost:9090");
properties.put("webhcat-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("group3",hgComponents3,hosts3);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("webhcat-site").get("templeton.zookeeper.hosts");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("testhost:9090");
expectedHosts.add("testhost2:9090");
expectedHosts.add("testhost2a:9090");
expectedHosts.add("testhost2b:9090");
assertEquals(4,hosts.length);
for ( String host : hosts) {
assertTrue(expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testMultipleHostTopologyUpdaterWithMultiHostWithSuffixValue() throws Exception {
String component="test_component";
BlueprintConfigurationProcessor.MultipleHostTopologyUpdater mhtu=new BlueprintConfigurationProcessor.MultipleHostTopologyUpdater(component);
String propertyOriginalValue="http://%HOSTGROUP::group_1,HOSTGROUP::group_2%/resource";
String updatedValue=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue,null,ImmutableList.of("host1:100","host2:200"));
assertEquals("http://host1:100,host2:200/resource",updatedValue);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRecommendConfiguration_applyAlways() throws Exception {
final String expectedHostName="c6401.apache.ambari.org";
final String expectedPortNum="808080";
final String expectedHostGroupName="host_group_1";
Map> properties=new HashMap>();
Map coreSiteMap=new HashMap();
properties.put("core-site",coreSiteMap);
coreSiteMap.put("fs.default.name",expectedHostName + ":" + expectedPortNum);
coreSiteMap.put("fs.defaultFS","hdfs://" + expectedHostName + ":"+ expectedPortNum);
coreSiteMap.put("fs.stackDefault.key2","dummyValue");
Map dummySiteMap=new HashMap();
properties.put("dummy-site",dummySiteMap);
dummySiteMap.put("dummy.prop","dummyValue");
Map> parentProperties=new HashMap>();
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton(expectedHostGroupName));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap(),createStackDefaults());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
topology.getAdvisedConfigurations().putAll(createAdvisedConfigMap());
topology.setConfigRecommendationStrategy(ConfigRecommendationStrategy.ALWAYS_APPLY);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
Set configTypes=configProcessor.doUpdateForClusterCreate();
assertEquals(expectedHostName + ":" + expectedPortNum,clusterConfig.getPropertyValue("core-site","fs.default.name"));
assertEquals("stackDefaultUpgraded",clusterConfig.getPropertyValue("core-site","fs.stackDefault.key1"));
assertNull(clusterConfig.getPropertyValue("core-site","fs.stackDefault.key2"));
assertNotNull(clusterConfig.getPropertyValue("core-site","fs.notStackDefault"));
assertEquals(2,topology.getAdvisedConfigurations().size());
assertFalse(configTypes.contains("dummy-site"));
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithSingleQuoteFlowStyleFormatSingleValueInSquareBrackets() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null);
String originalValue="['test_value']";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="['test_value']";
assertEquals(expectedValue,newValue);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterVerifyRetrySettingsDefault() throws Exception {
Map> configProperties=new HashMap>();
HashMap clusterEnvProperties=new HashMap();
configProperties.put("cluster-env",clusterEnvProperties);
Configuration clusterConfig=new Configuration(configProperties,Collections.>>emptyMap());
TestHostGroup testHostGroup=new TestHostGroup("test-host-group-one",Collections.emptySet(),Collections.emptySet());
ClusterTopology topology=createClusterTopology(bp,clusterConfig,Collections.singleton(testHostGroup));
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Set updatedConfigTypes=updater.doUpdateForClusterCreate();
assertEquals("Incorrect number of properties added to cluster-env for retry",3,clusterEnvProperties.size());
assertEquals("command_retry_enabled was not set to the expected default","true",clusterEnvProperties.get("command_retry_enabled"));
assertEquals("commands_to_retry was not set to the expected default","INSTALL,START",clusterEnvProperties.get("commands_to_retry"));
assertEquals("command_retry_max_time_in_sec was not set to the expected default","600",clusterEnvProperties.get("command_retry_max_time_in_sec"));
assertEquals("Incorrect number of config types updated by this operation",1,updatedConfigTypes.size());
assertTrue("Expected type not included in the updated set",updatedConfigTypes.contains("cluster-env"));
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueWithPlainFlowStyleFormatMultiValueInSquareBrackets() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null,BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
String originalValue="[test_value1,test_value2]";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="[test_value1,test_value2]";
assertEquals(expectedValue,newValue);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__MultipleAppTimelineServer() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("yarn.timeline-service.address","testhost:10200");
typeProps.put("yarn.timeline-service.webapp.address","testhost:8188");
typeProps.put("yarn.timeline-service.webapp.https.address","testhost:8190");
properties.put("yarn-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection group1Components=new HashSet();
group1Components.add("NAMENODE");
group1Components.add("SECONDARY_NAMENODE");
group1Components.add("RESOURCEMANAGER");
group1Components.add("APP_TIMELINE_SERVER");
TestHostGroup group1=new TestHostGroup("group1",group1Components,Collections.singleton("testhost"));
Collection group2Components=new HashSet();
group2Components.add("DATANODE");
group2Components.add("HDFS_CLIENT");
group2Components.add("APP_TIMELINE_SERVER");
TestHostGroup group2=new TestHostGroup("group2",group2Components,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
expect(stack.getCardinality("APP_TIMELINE_SERVER")).andReturn(new Cardinality("0-1")).anyTimes();
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("yarn-site").get("yarn.timeline-service.address");
assertEquals("Timeline Server config property should not have been updated","testhost:10200",updatedVal);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_DBHostProperty__exportedValue() throws Exception {
Map> properties=new HashMap>();
Map hiveSiteProps=new HashMap();
hiveSiteProps.put("javax.jdo.option.ConnectionURL","jdbc:mysql://%HOSTGROUP::group1%/hive?createDatabaseIfNotExist=true");
Map hiveEnvProps=new HashMap();
hiveEnvProps.put("hive_database","New MySQL Database");
properties.put("hive-site",hiveSiteProps);
properties.put("hive-env",hiveEnvProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
hgComponents.add("MYSQL_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hive-site").get("javax.jdo.option.ConnectionURL");
assertEquals("jdbc:mysql://testhost/hive?createDatabaseIfNotExist=true",updatedVal);
}
InternalCallVerifier EqualityVerifier
@Test public void testMultipleHostTopologyUpdaterWithYamlPropertyMultiHostValue() throws Exception {
String component="test_component";
BlueprintConfigurationProcessor.MultipleHostTopologyUpdater mhtu=new BlueprintConfigurationProcessor.MultipleHostTopologyUpdater(component);
String propertyOriginalValue1="['%HOSTGROUP::group_1%', '%HOSTGROUP::group_2%']";
String propertyOriginalValue2="[%HOSTGROUP::group_1%, %HOSTGROUP::group_2%]";
String updatedValue1=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue1,null,ImmutableList.of("host1:100","host2:200"));
String updatedValue2=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue2,null,ImmutableList.of("host1:100","host2:200"));
assertEquals("host1:100,host2:200",updatedValue1);
assertEquals("host1:100,host2:200",updatedValue2);
}
InternalCallVerifier EqualityVerifier
@Test public void testRangerKmsServerProperties() throws Exception {
final String kmsSiteConfigType="kms-site";
Map> properties=new HashMap>();
Map kmsSiteProperties=new HashMap();
properties.put(kmsSiteConfigType,kmsSiteProperties);
kmsSiteProperties.put("hadoop.kms.authentication.signer.secret.provider.zookeeper.connection.string",createHostAddress("%HOSTGROUP::group1%","2181") + "," + createHostAddress("%HOSTGROUP::group2%","2181"));
kmsSiteProperties.put("hadoop.kms.key.provider.uri","dbks://http@localhost:9292/kms");
Map> parentProperties=new HashMap>();
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
Collection kmsServerComponents=new HashSet();
kmsServerComponents.add("RANGER_KMS_SERVER");
TestHostGroup group1=new TestHostGroup("group1",kmsServerComponents,Collections.singleton("host1"));
TestHostGroup group2=new TestHostGroup("group2",kmsServerComponents,Collections.singleton("host2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
configProcessor.doUpdateForClusterCreate();
assertEquals("host1:2181,host2:2181",clusterConfig.getPropertyValue(kmsSiteConfigType,"hadoop.kms.authentication.signer.secret.provider.zookeeper.connection.string"));
assertEquals("dbks://http@localhost:9292/kms",clusterConfig.getPropertyValue(kmsSiteConfigType,"hadoop.kms.key.provider.uri"));
}
InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForBlueprintExport_SingleHostProperty_specifiedInParentConfig() throws Exception {
Map> properties=new HashMap>();
Map yarnSiteProps=new HashMap();
yarnSiteProps.put("yarn.resourcemanager.hostname","testhost");
properties.put("yarn-site",yarnSiteProps);
Map> parentProperties=new HashMap>();
Map parentYarnSiteProps=new HashMap();
parentYarnSiteProps.put("yarn.resourcemanager.resource-tracker.address","testhost");
parentProperties.put("yarn-site",parentYarnSiteProps);
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor configProcessor=new BlueprintConfigurationProcessor(topology);
configProcessor.doUpdateForBlueprintExport();
assertEquals("%HOSTGROUP::group1%",clusterConfig.getPropertyValue("yarn-site","yarn.resourcemanager.hostname"));
assertEquals("%HOSTGROUP::group1%",clusterConfig.getPropertyValue("yarn-site","yarn.resourcemanager.resource-tracker.address"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetRequiredHostGroups___multipleGroups() throws Exception {
Map> properties=new HashMap>();
Map coreSiteMap=new HashMap();
properties.put("core-site",coreSiteMap);
coreSiteMap.put("fs.defaultFS","localhost");
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
expect(stack.getCardinality("NAMENODE")).andReturn(new Cardinality("1")).anyTimes();
Collection hgComponents1=new HashSet();
hgComponents1.add("HIVE_SERVER");
hgComponents1.add("NAMENODE");
TestHostGroup group1=new TestHostGroup("group1",hgComponents1,Collections.singleton("host1"));
Collection hgComponents2=new HashSet();
hgComponents2.add("NAMENODE");
hgComponents2.add("DATANODE");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("host2"));
Collection hostGroups=new ArrayList();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Collection requiredGroups=updater.getRequiredHostGroups();
assertEquals(2,requiredGroups.size());
assertTrue(requiredGroups.containsAll(Arrays.asList("group1","group2")));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__exportedValue_UsingMinusSymbolInHostGroupName() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("yarn.resourcemanager.hostname","%HOSTGROUP::os-amb-r6-secha-1427972156-hbaseha-3-6%");
properties.put("yarn-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("os-amb-r6-secha-1427972156-hbaseha-3-6",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("yarn-site").get("yarn.resourcemanager.hostname");
assertEquals("testhost",updatedVal);
}
InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__defaultValue_providedInParent() throws Exception {
Map> properties=new HashMap>();
Map yarnSiteProps=new HashMap();
yarnSiteProps.put("yarn.resourcemanager.hostname","localhost");
properties.put("yarn-site",yarnSiteProps);
Map> parentProperties=new HashMap>();
Map parentYarnSiteProps=new HashMap();
parentYarnSiteProps.put("yarn.resourcemanager.resource-tracker.address","localhost");
parentProperties.put("yarn-site",parentYarnSiteProps);
Configuration parentClusterConfig=new Configuration(parentProperties,Collections.>>emptyMap());
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap(),parentClusterConfig);
Collection group1Components=new HashSet();
group1Components.add("NAMENODE");
group1Components.add("SECONDARY_NAMENODE");
group1Components.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",group1Components,Collections.singleton("testhost"));
Collection group2Components=new HashSet();
group2Components.add("DATANODE");
group2Components.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",group2Components,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
assertEquals("testhost",clusterConfig.getPropertyValue("yarn-site","yarn.resourcemanager.hostname"));
assertEquals("testhost",clusterConfig.getPropertyValue("yarn-site","yarn.resourcemanager.resource-tracker.address"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDoUpdateForClusterCreate_SingleHostProperty__exportedValue__WithPort() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("fs.defaultFS","%HOSTGROUP::group1%:5050");
properties.put("core-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("RESOURCEMANAGER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("testhost2"));
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("core-site").get("fs.defaultFS");
assertEquals("testhost:5050",updatedVal);
}
InternalCallVerifier EqualityVerifier
@Test public void testMultipleHostTopologyUpdaterWithSingleHostWithSuffixValue() throws Exception {
String component="test_component";
BlueprintConfigurationProcessor.MultipleHostTopologyUpdater mhtu=new BlueprintConfigurationProcessor.MultipleHostTopologyUpdater(component);
String propertyOriginalValue="http://%HOSTGROUP::group_1%#";
String updatedValue=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue,null,ImmutableList.of("host1:100"));
assertEquals("http://host1:100#",updatedValue);
}
InternalCallVerifier EqualityVerifier
@Test public void testMultipleHostTopologyUpdaterWithMultiHostValue() throws Exception {
String component="test_component";
BlueprintConfigurationProcessor.MultipleHostTopologyUpdater mhtu=new BlueprintConfigurationProcessor.MultipleHostTopologyUpdater(component);
String propertyOriginalValue="%HOSTGROUP::group_1%:11,%HOSTGROUP::group_2%:11";
String updatedValue=mhtu.resolveHostGroupPlaceholder(propertyOriginalValue,null,ImmutableList.of("host1:100","host2:200"));
assertEquals("host1:100,host2:200",updatedValue);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDoUpdateForClusterCreate_MultiHostProperty__exportedValues() throws Exception {
Map> properties=new HashMap>();
Map typeProps=new HashMap();
typeProps.put("hbase.zookeeper.quorum","%HOSTGROUP::group1%,%HOSTGROUP::group2%");
properties.put("hbase-site",typeProps);
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents=new HashSet();
hgComponents.add("NAMENODE");
hgComponents.add("SECONDARY_NAMENODE");
hgComponents.add("ZOOKEEPER_SERVER");
TestHostGroup group1=new TestHostGroup("group1",hgComponents,Collections.singleton("testhost"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_SERVER");
Set hosts2=new HashSet();
hosts2.add("testhost2");
hosts2.add("testhost2a");
hosts2.add("testhost2b");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,hosts2);
Collection hgComponents3=new HashSet();
hgComponents2.add("HDFS_CLIENT");
hgComponents2.add("ZOOKEEPER_CLIENT");
Set hosts3=new HashSet();
hosts3.add("testhost3");
hosts3.add("testhost3a");
TestHostGroup group3=new TestHostGroup("group3",hgComponents3,hosts3);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
hostGroups.add(group3);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
updater.doUpdateForClusterCreate();
String updatedVal=topology.getConfiguration().getFullProperties().get("hbase-site").get("hbase.zookeeper.quorum");
String[] hosts=updatedVal.split(",");
Collection expectedHosts=new HashSet();
expectedHosts.add("testhost");
expectedHosts.add("testhost2");
expectedHosts.add("testhost2a");
expectedHosts.add("testhost2b");
assertEquals(4,hosts.length);
for ( String host : hosts) {
assertTrue(expectedHosts.contains(host));
expectedHosts.remove(host);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testYamlMultiValueFormatWithPlainFlowStyleSingleValueInSquareBrackets() throws Exception {
BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator yamlMultiValuePropertyDecorator=new BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator(null,BlueprintConfigurationProcessor.YamlMultiValuePropertyDecorator.FlowStyle.PLAIN);
String originalValue="[test_value]";
String newValue=yamlMultiValuePropertyDecorator.doFormat(originalValue);
String expectedValue="[test_value]";
assertEquals(expectedValue,newValue);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRequiredHostGroups___validComponentCountOfZero() throws Exception {
Map> properties=new HashMap>();
Map hiveSite=new HashMap();
properties.put("hive-site",hiveSite);
Map hiveEnv=new HashMap();
properties.put("hive-env",hiveEnv);
hiveSite.put("javax.jdo.option.ConnectionURL","localhost:1111");
hiveEnv.put("hive_database","New Database");
Configuration clusterConfig=new Configuration(properties,Collections.>>emptyMap());
Collection hgComponents1=new HashSet();
hgComponents1.add("HIVE_SERVER");
hgComponents1.add("NAMENODE");
TestHostGroup group1=new TestHostGroup("group1",hgComponents1,Collections.singleton("host1"));
Collection hgComponents2=new HashSet();
hgComponents2.add("DATANODE");
TestHostGroup group2=new TestHostGroup("group2",hgComponents2,Collections.singleton("host2"));
Collection hostGroups=new ArrayList();
hostGroups.add(group1);
hostGroups.add(group2);
ClusterTopology topology=createClusterTopology(bp,clusterConfig,hostGroups);
BlueprintConfigurationProcessor updater=new BlueprintConfigurationProcessor(topology);
Collection requiredGroups=updater.getRequiredHostGroups();
assertEquals(0,requiredGroups.size());
}
Class: org.apache.ambari.server.controller.internal.BlueprintResourceProviderTest InternalCallVerifier NullVerifier
@Test public void testPopulateConfigurationEntity_configIsNull() throws Exception {
Map configuration=null;
BlueprintConfiguration config=new BlueprintConfigEntity();
provider.populateConfigurationEntity(configuration,config);
assertNotNull(config.getConfigAttributes());
assertNotNull(config.getConfigData());
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testDecidePopulationStrategy_withOldSchema() throws Exception {
Map configMap=new HashMap();
configMap.put("global/hive_database","db");
BlueprintConfigPopulationStrategy provisioner=provider.decidePopulationStrategy(configMap);
assertNotNull(provisioner);
assertTrue(provisioner instanceof BlueprintConfigPopulationStrategyV1);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources_withEmptyConfiguration() throws Exception {
Set> setProperties=getBlueprintTestProperties();
setConfigurationProperties(setProperties);
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(Request.REQUEST_INFO_BODY_PROPERTY,"{\"configurations\":[]}");
Request request=createMock(Request.class);
expect(blueprintFactory.createBlueprint(setProperties.iterator().next(),null)).andReturn(blueprint).once();
blueprint.validateRequiredProperties();
blueprint.validateTopology();
expect(blueprint.toEntity()).andReturn(entity);
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce();
expect(request.getProperties()).andReturn(setProperties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties);
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null);
dao.create(entity);
replay(dao,entity,metaInfo,blueprintFactory,blueprint,request,managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(Resource.Type.Blueprint,PropertyHelper.getPropertyIds(Resource.Type.Blueprint),PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
assertEquals(request,lastEvent.getRequest());
assertNull(lastEvent.getPredicate());
verify(dao,entity,blueprintFactory,metaInfo,request,managementController);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesNoPredicate_withConfiguration() throws SystemException, UnsupportedPropertyException, NoSuchParentResourceException, NoSuchResourceException, AmbariException {
StackInfo info=createMock(StackInfo.class);
expect(info.getConfigPropertiesTypes("core-site")).andReturn(new HashMap>()).anyTimes();
expect(metaInfo.getStack("test-stack-name","test-stack-version")).andReturn(info).anyTimes();
replay(info,metaInfo);
Request request=createNiceMock(Request.class);
Set> testProperties=getBlueprintTestProperties();
setConfigurationProperties(testProperties);
BlueprintEntity entity=createEntity(testProperties.iterator().next());
List results=new ArrayList();
results.add(entity);
expect(dao.findAll()).andReturn(results);
replay(dao,request);
Set setResults=provider.getResources(request,null);
assertEquals(1,setResults.size());
verify(dao);
validateResource(setResults.iterator().next(),true);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources_withConfiguration() throws Exception {
Set> setProperties=getBlueprintTestProperties();
setConfigurationProperties(setProperties);
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Map requestInfoProperties=getTestRequestInfoProperties();
Request request=createMock(Request.class);
expect(blueprintFactory.createBlueprint(setProperties.iterator().next(),null)).andReturn(blueprint).once();
blueprint.validateRequiredProperties();
blueprint.validateTopology();
expect(blueprint.toEntity()).andReturn(entity);
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce();
expect(request.getProperties()).andReturn(setProperties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties);
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null);
dao.create(entity);
replay(dao,entity,metaInfo,blueprintFactory,blueprint,request,managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(Resource.Type.Blueprint,PropertyHelper.getPropertyIds(Resource.Type.Blueprint),PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
assertEquals(request,lastEvent.getRequest());
assertNull(lastEvent.getPredicate());
verify(dao,entity,blueprintFactory,metaInfo,request,managementController);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateConfigurationEntity_oldSchema() throws Exception {
Map configuration=new HashMap();
configuration.put("global/property1","val1");
configuration.put("global/property2","val2");
BlueprintConfiguration config=new BlueprintConfigEntity();
provider.populateConfigurationEntity(configuration,config);
assertNotNull(config.getConfigData());
assertNotNull(config.getConfigAttributes());
Map,?> configData=StageUtils.getGson().fromJson(config.getConfigData(),Map.class);
Map,Map,?>> configAttrs=StageUtils.getGson().fromJson(config.getConfigAttributes(),Map.class);
assertNotNull(configData);
assertNotNull(configAttrs);
assertEquals(2,configData.size());
assertTrue(configData.containsKey("property1"));
assertTrue(configData.containsKey("property2"));
assertEquals("val1",configData.get("property1"));
assertEquals("val2",configData.get("property2"));
assertEquals(0,configAttrs.size());
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testDecidePopulationStrategy_configIsEmpty() throws Exception {
Map configMap=new HashMap();
BlueprintConfigPopulationStrategy provisioner=provider.decidePopulationStrategy(configMap);
assertNotNull(provisioner);
assertTrue(provisioner instanceof BlueprintConfigPopulationStrategyV2);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesNoPredicate() throws SystemException, UnsupportedPropertyException, NoSuchParentResourceException, NoSuchResourceException {
Request request=createNiceMock(Request.class);
BlueprintEntity entity=createEntity(getBlueprintTestProperties().iterator().next());
List results=new ArrayList();
results.add(entity);
expect(dao.findAll()).andReturn(results);
replay(dao,request);
Set setResults=provider.getResources(request,null);
assertEquals(1,setResults.size());
verify(dao);
validateResource(setResults.iterator().next(),false);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testDecidePopulationStrategy_configIsNull() throws Exception {
Map configMap=null;
BlueprintConfigPopulationStrategy provisioner=provider.decidePopulationStrategy(configMap);
assertNotNull(provisioner);
assertTrue(provisioner instanceof BlueprintConfigPopulationStrategyV2);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testDecidePopulationStrategy_withNewSchema_attributes() throws Exception {
Map configMap=new HashMap();
configMap.put("global/properties_attributes/final/foo_contact","true");
BlueprintConfigPopulationStrategy provisioner=provider.decidePopulationStrategy(configMap);
assertNotNull(provisioner);
assertTrue(provisioner instanceof BlueprintConfigPopulationStrategyV2);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources_withSingleConfigurationType() throws Exception {
Set> setProperties=getBlueprintTestProperties();
setConfigurationProperties(setProperties);
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(Request.REQUEST_INFO_BODY_PROPERTY,"{\"configurations\":[{\"configuration-type\":{\"properties\":{\"property\":\"value\"}}}]}");
Request request=createMock(Request.class);
expect(blueprintFactory.createBlueprint(setProperties.iterator().next(),null)).andReturn(blueprint).once();
blueprint.validateRequiredProperties();
blueprint.validateTopology();
expect(blueprint.toEntity()).andReturn(entity);
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce();
expect(request.getProperties()).andReturn(setProperties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties);
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null);
dao.create(entity);
replay(dao,entity,metaInfo,blueprintFactory,blueprint,request,managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(Resource.Type.Blueprint,PropertyHelper.getPropertyIds(Resource.Type.Blueprint),PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
assertEquals(request,lastEvent.getRequest());
assertNull(lastEvent.getPredicate());
verify(dao,entity,blueprintFactory,metaInfo,request,managementController);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateConfigurationList() throws Exception {
StackEntity stackEntity=new StackEntity();
stackEntity.setStackName("test-stack-name");
stackEntity.setStackVersion("test-stack-version");
BlueprintEntity entity=createMock(BlueprintEntity.class);
expect(entity.getStack()).andReturn(stackEntity).anyTimes();
HashMap> pwdProperties=new HashMap>(){
{
put(PropertyInfo.PropertyType.PASSWORD,new HashSet(){
{
add("test.password");
}
}
);
}
}
;
StackInfo info=createMock(StackInfo.class);
expect(info.getConfigPropertiesTypes("type1")).andReturn(new HashMap>()).anyTimes();
expect(info.getConfigPropertiesTypes("type2")).andReturn(new HashMap>()).anyTimes();
expect(info.getConfigPropertiesTypes("type3")).andReturn(pwdProperties).anyTimes();
expect(metaInfo.getStack("test-stack-name","test-stack-version")).andReturn(info).anyTimes();
replay(info,metaInfo,entity);
BlueprintConfigEntity config1=new BlueprintConfigEntity();
config1.setType("type1");
config1.setConfigData("{\"key1\":\"value1\"}");
config1.setBlueprintEntity(entity);
BlueprintConfigEntity config2=new BlueprintConfigEntity();
config2.setType("type2");
config2.setConfigData("{\"key2\":\"value2\"}");
config2.setConfigAttributes("{}");
config2.setBlueprintEntity(entity);
BlueprintConfigEntity config3=new BlueprintConfigEntity();
config3.setType("type3");
config3.setConfigData("{\"key3\":\"value3\",\"key4\":\"value4\",\"test.password\":\"pwdValue\"}");
config3.setConfigAttributes("{\"final\":{\"key3\":\"attrValue1\",\"key4\":\"attrValue2\"}}");
config3.setBlueprintEntity(entity);
List>> configs=provider.populateConfigurationList(Arrays.asList(config1,config2,config3));
assertNotNull(configs);
assertEquals(3,configs.size());
Map> configuration1=configs.get(0);
assertNotNull(configuration1);
assertEquals(1,configuration1.size());
assertTrue(configuration1.containsKey("type1"));
Map typeConfig1=configuration1.get("type1");
assertNotNull(typeConfig1);
assertEquals(1,typeConfig1.size());
assertTrue(typeConfig1.containsKey(BlueprintResourceProvider.PROPERTIES_PROPERTY_ID));
Map confProperties1=(Map)typeConfig1.get(BlueprintResourceProvider.PROPERTIES_PROPERTY_ID);
assertNotNull(confProperties1);
assertEquals(1,confProperties1.size());
assertEquals("value1",confProperties1.get("key1"));
Map> configuration2=configs.get(1);
assertNotNull(configuration2);
assertEquals(1,configuration2.size());
assertTrue(configuration2.containsKey("type2"));
Map typeConfig2=configuration2.get("type2");
assertNotNull(typeConfig2);
assertEquals(1,typeConfig2.size());
assertTrue(typeConfig2.containsKey(BlueprintResourceProvider.PROPERTIES_PROPERTY_ID));
Map confProperties2=(Map)typeConfig2.get(BlueprintResourceProvider.PROPERTIES_PROPERTY_ID);
assertNotNull(confProperties2);
assertEquals(1,confProperties2.size());
assertEquals("value2",confProperties2.get("key2"));
Map> configuration3=configs.get(2);
assertNotNull(configuration3);
assertEquals(1,configuration3.size());
assertTrue(configuration3.containsKey("type3"));
Map typeConfig3=configuration3.get("type3");
assertNotNull(typeConfig3);
assertEquals(2,typeConfig3.size());
assertTrue(typeConfig3.containsKey(BlueprintResourceProvider.PROPERTIES_PROPERTY_ID));
Map confProperties3=(Map)typeConfig3.get(BlueprintResourceProvider.PROPERTIES_PROPERTY_ID);
assertNotNull(confProperties3);
assertEquals(3,confProperties3.size());
assertEquals("value3",confProperties3.get("key3"));
assertEquals("value4",confProperties3.get("key4"));
assertEquals("SECRET:type3:-1:test.password",confProperties3.get("test.password"));
assertTrue(typeConfig3.containsKey(BlueprintResourceProvider.PROPERTIES_ATTRIBUTES_PROPERTY_ID));
Map> confAttributes3=(Map>)typeConfig3.get(BlueprintResourceProvider.PROPERTIES_ATTRIBUTES_PROPERTY_ID);
assertNotNull(confAttributes3);
assertEquals(1,confAttributes3.size());
assertTrue(confAttributes3.containsKey("final"));
Map finalAttrs=confAttributes3.get("final");
assertEquals(2,finalAttrs.size());
assertEquals("attrValue1",finalAttrs.get("key3"));
assertEquals("attrValue2",finalAttrs.get("key4"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources_withSecurityConfiguration() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Request request=createMock(Request.class);
Set> setProperties=getBlueprintTestProperties();
Map requestInfoProperties=getTestRequestInfoProperties();
SecurityConfiguration securityConfiguration=new SecurityConfiguration(SecurityType.KERBEROS,"testRef",null);
expect(securityFactory.createSecurityConfigurationFromRequest(anyObject(HashMap.class),anyBoolean())).andReturn(securityConfiguration).once();
expect(blueprintFactory.createBlueprint(setProperties.iterator().next(),securityConfiguration)).andReturn(blueprint).once();
blueprint.validateRequiredProperties();
blueprint.validateTopology();
expect(blueprint.toEntity()).andReturn(entity);
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce();
expect(request.getProperties()).andReturn(setProperties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties);
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null);
dao.create(entity);
replay(dao,entity,metaInfo,blueprintFactory,securityFactory,blueprint,request,managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(Resource.Type.Blueprint,PropertyHelper.getPropertyIds(Resource.Type.Blueprint),PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
assertEquals(request,lastEvent.getRequest());
assertNull(lastEvent.getPredicate());
verify(dao,entity,blueprintFactory,metaInfo,request,managementController);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources_NoValidation() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Request request=createMock(Request.class);
Set> setProperties=getBlueprintTestProperties();
Map requestInfoProperties=getTestRequestInfoProperties();
requestInfoProperties.put("validate_topology","false");
expect(blueprintFactory.createBlueprint(setProperties.iterator().next(),null)).andReturn(blueprint).once();
blueprint.validateRequiredProperties();
expect(blueprint.toEntity()).andReturn(entity);
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce();
expect(request.getProperties()).andReturn(setProperties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties);
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null);
dao.create(entity);
replay(dao,entity,metaInfo,blueprintFactory,blueprint,request,managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(Resource.Type.Blueprint,PropertyHelper.getPropertyIds(Resource.Type.Blueprint),PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
assertEquals(request,lastEvent.getRequest());
assertNull(lastEvent.getPredicate());
verify(dao,entity,blueprintFactory,metaInfo,request,managementController);
}
InternalCallVerifier NullVerifier
@Test public void testPopulateConfigurationEntity_configIsEmpty() throws Exception {
Map configuration=new HashMap();
BlueprintConfiguration config=new BlueprintConfigEntity();
provider.populateConfigurationEntity(configuration,config);
assertNotNull(config.getConfigAttributes());
assertNotNull(config.getConfigData());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateConfigurationEntity_newSchema() throws Exception {
Map configuration=new HashMap();
configuration.put("global/properties/property1","val1");
configuration.put("global/properties/property2","val2");
configuration.put("global/properties_attributes/final/property1","true");
configuration.put("global/properties_attributes/final/property2","false");
configuration.put("global/properties_attributes/deletable/property1","true");
BlueprintConfiguration config=new BlueprintConfigEntity();
provider.populateConfigurationEntity(configuration,config);
assertNotNull(config.getConfigData());
assertNotNull(config.getConfigAttributes());
Map,?> configData=StageUtils.getGson().fromJson(config.getConfigData(),Map.class);
Map,Map,?>> configAttrs=StageUtils.getGson().fromJson(config.getConfigAttributes(),Map.class);
assertNotNull(configData);
assertNotNull(configAttrs);
assertEquals(2,configData.size());
assertTrue(configData.containsKey("property1"));
assertTrue(configData.containsKey("property2"));
assertEquals("val1",configData.get("property1"));
assertEquals("val2",configData.get("property2"));
assertEquals(2,configAttrs.size());
assertTrue(configAttrs.containsKey("final"));
assertTrue(configAttrs.containsKey("deletable"));
Map,?> finalAttrs=configAttrs.get("final");
assertNotNull(finalAttrs);
assertEquals(2,finalAttrs.size());
assertTrue(finalAttrs.containsKey("property1"));
assertTrue(finalAttrs.containsKey("property2"));
assertEquals("true",finalAttrs.get("property1"));
assertEquals("false",finalAttrs.get("property2"));
Map,?> deletableAttrs=configAttrs.get("deletable");
assertNotNull(deletableAttrs);
assertEquals(1,deletableAttrs.size());
assertTrue(deletableAttrs.containsKey("property1"));
assertEquals("true",deletableAttrs.get("property1"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Request request=createMock(Request.class);
Set> setProperties=getBlueprintTestProperties();
Map requestInfoProperties=getTestRequestInfoProperties();
expect(blueprintFactory.createBlueprint(setProperties.iterator().next(),null)).andReturn(blueprint).once();
expect(securityFactory.createSecurityConfigurationFromRequest(null,true)).andReturn(null).anyTimes();
blueprint.validateRequiredProperties();
blueprint.validateTopology();
expect(blueprint.toEntity()).andReturn(entity);
expect(blueprint.getName()).andReturn(BLUEPRINT_NAME).atLeastOnce();
expect(request.getProperties()).andReturn(setProperties);
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties);
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(null);
dao.create(entity);
replay(dao,entity,metaInfo,blueprintFactory,securityFactory,blueprint,request,managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(Resource.Type.Blueprint,PropertyHelper.getPropertyIds(Resource.Type.Blueprint),PropertyHelper.getKeyPropertyIds(Resource.Type.Blueprint),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
assertEquals(request,lastEvent.getRequest());
assertNull(lastEvent.getPredicate());
verify(dao,entity,blueprintFactory,securityFactory,metaInfo,request,managementController);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteResources() throws SystemException, UnsupportedPropertyException, NoSuchParentResourceException, NoSuchResourceException {
BlueprintEntity blueprintEntity=createEntity(getBlueprintTestProperties().iterator().next());
expect(dao.findByName(BLUEPRINT_NAME)).andReturn(blueprintEntity);
dao.removeByName(blueprintEntity.getBlueprintName());
expectLastCall();
replay(dao);
Predicate predicate=new EqualsPredicate(BlueprintResourceProvider.BLUEPRINT_NAME_PROPERTY_ID,BLUEPRINT_NAME);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
provider.addObserver(observer);
provider.deleteResources(predicate);
ResourceProviderEvent lastEvent=observer.getLastEvent();
assertNotNull(lastEvent);
assertEquals(Resource.Type.Blueprint,lastEvent.getResourceType());
assertEquals(ResourceProviderEvent.Type.Delete,lastEvent.getType());
assertNotNull(lastEvent.getPredicate());
verify(dao);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testDecidePopulationStrategy_withNewSchema_properties() throws Exception {
Map configMap=new HashMap();
configMap.put("global/properties/foo_contact","foo@ffl.dsfds");
BlueprintConfigPopulationStrategy provisioner=provider.decidePopulationStrategy(configMap);
assertNotNull(provisioner);
assertTrue(provisioner instanceof BlueprintConfigPopulationStrategyV2);
}
Class: org.apache.ambari.server.controller.internal.CalculatedStatusTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testStatusFromStages() throws Exception {
Collection stages;
CalculatedStatus status;
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.COMPLETED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.IN_PROGRESS,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.IN_PROGRESS,status.getStatus());
assertEquals(48.3,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.PENDING,status.getStatus());
assertEquals(0.0,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.FAILED,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.FAILED,status.getStatus());
assertEquals(55.55,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.TIMEDOUT),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.TIMEDOUT,status.getStatus());
assertEquals(66.66,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertEquals(47.5,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertEquals(47.5,status.getPercent(),0.1);
stages=getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertNull(status.getDisplayStatus());
assertEquals(47.5,status.getPercent(),0.1);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStatusFromStageEntities() throws Exception {
Collection stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED));
CalculatedStatus status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.COMPLETED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.IN_PROGRESS,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.IN_PROGRESS,status.getStatus());
assertEquals(48.3,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.PENDING,status.getStatus());
assertEquals(0.0,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.FAILED,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.FAILED,status.getStatus());
assertEquals(55.55,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.TIMEDOUT),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.TIMEDOUT,status.getStatus());
assertEquals(66.66,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertEquals(47.5,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertEquals(47.5,status.getPercent(),0.1);
stages=getStageEntities(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED),getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING),getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING));
status=CalculatedStatus.statusFromStageEntities(stages);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertEquals(47.5,status.getPercent(),0.1);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testStatusFromTaskEntities() throws Exception {
Collection tasks=getTaskEntities(HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING);
CalculatedStatus status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.PENDING,status.getStatus());
assertEquals(0.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.FAILED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.FAILED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.FAILED,HostRoleStatus.FAILED);
status=CalculatedStatus.statusFromTaskEntities(tasks,true);
assertEquals(HostRoleStatus.COMPLETED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.TIMEDOUT,HostRoleStatus.TIMEDOUT,HostRoleStatus.TIMEDOUT,HostRoleStatus.TIMEDOUT);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.TIMEDOUT,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.TIMEDOUT,HostRoleStatus.FAILED,HostRoleStatus.TIMEDOUT,HostRoleStatus.TIMEDOUT);
status=CalculatedStatus.statusFromTaskEntities(tasks,true);
assertEquals(HostRoleStatus.COMPLETED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.ABORTED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED,HostRoleStatus.ABORTED);
status=CalculatedStatus.statusFromTaskEntities(tasks,true);
assertEquals(HostRoleStatus.ABORTED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.PENDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.IN_PROGRESS,status.getStatus());
assertEquals(40.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.COMPLETED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING,HostRoleStatus.PENDING,HostRoleStatus.PENDING);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.HOLDING,status.getStatus());
assertEquals(54.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING_FAILED,HostRoleStatus.PENDING,HostRoleStatus.PENDING);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.HOLDING_FAILED,status.getStatus());
assertEquals(54.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.HOLDING_TIMEDOUT,HostRoleStatus.PENDING,HostRoleStatus.PENDING);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.HOLDING_TIMEDOUT,status.getStatus());
assertEquals(54.0,status.getPercent(),0.1);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that aborted states calculate correctly. This is needed for upgrades
* where the upgrade can be ABORTED and must not be calculated as COMPLETED.
* @throws Exception
*/
@Test public void testAbortedCalculation() throws Exception {
Collection tasks=getTaskEntities(HostRoleStatus.ABORTED);
CalculatedStatus status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.ABORTED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
status=CalculatedStatus.statusFromTaskEntities(tasks,true);
assertEquals(HostRoleStatus.ABORTED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
tasks=getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.ABORTED);
status=CalculatedStatus.statusFromTaskEntities(tasks,false);
assertEquals(HostRoleStatus.ABORTED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
status=CalculatedStatus.statusFromTaskEntities(tasks,true);
assertEquals(HostRoleStatus.ABORTED,status.getStatus());
assertEquals(100.0,status.getPercent(),0.1);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCountsWithRepeatHosts() throws Exception {
List stages=new ArrayList();
stages.addAll(getStages(getTaskEntities(HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED,HostRoleStatus.COMPLETED)));
HostRoleCommandEntity entity=new HostRoleCommandEntity();
entity.setTaskId(taskId++);
entity.setStatus(HostRoleStatus.PENDING);
stages.addAll(getStages(Collections.singleton(entity)));
CalculatedStatus calc=CalculatedStatus.statusFromStages(stages);
assertEquals(HostRoleStatus.IN_PROGRESS,calc.getStatus());
assertEquals(80d,calc.getPercent(),0.1d);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that a SKIPPED_FAILED status of any task means the
* summary display status for is SKIPPED_FAILED, but summary status is
* still COMPLETED
* @throws Exception
*/
@Test public void testSkippedFailed_UpgradeGroup() throws Exception {
final HostRoleCommandStatusSummaryDTO summary1=createNiceMock(HostRoleCommandStatusSummaryDTO.class);
ArrayList taskStatuses1=new ArrayList(){
{
add(HostRoleStatus.COMPLETED);
add(HostRoleStatus.COMPLETED);
add(HostRoleStatus.COMPLETED);
}
}
;
final HostRoleCommandStatusSummaryDTO summary2=createNiceMock(HostRoleCommandStatusSummaryDTO.class);
ArrayList taskStatuses2=new ArrayList(){
{
add(HostRoleStatus.COMPLETED);
add(HostRoleStatus.SKIPPED_FAILED);
add(HostRoleStatus.COMPLETED);
}
}
;
Map stageDto=new HashMap(){
{
put(1l,summary1);
put(2l,summary2);
}
}
;
Set stageIds=new HashSet(){
{
add(1l);
add(2l);
}
}
;
expect(summary1.getTaskTotal()).andReturn(taskStatuses1.size()).anyTimes();
expect(summary2.getTaskTotal()).andReturn(taskStatuses2.size()).anyTimes();
expect(summary1.isStageSkippable()).andReturn(true).anyTimes();
expect(summary2.isStageSkippable()).andReturn(true).anyTimes();
expect(summary1.getTaskStatuses()).andReturn(taskStatuses1).anyTimes();
expect(summary2.getTaskStatuses()).andReturn(taskStatuses2).anyTimes();
replay(summary1,summary2);
CalculatedStatus calc=CalculatedStatus.statusFromStageSummary(stageDto,stageIds);
assertEquals(HostRoleStatus.SKIPPED_FAILED,calc.getDisplayStatus());
assertEquals(HostRoleStatus.COMPLETED,calc.getStatus());
}
Class: org.apache.ambari.server.controller.internal.ClientConfigResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testGetResourcesFromCommonServices() throws Exception {
Resource.Type type=Resource.Type.ClientConfig;
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
StackId stackId=createNiceMock(StackId.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
ServiceInfo serviceInfo=createNiceMock(ServiceInfo.class);
CommandScriptDefinition commandScriptDefinition=createNiceMock(CommandScriptDefinition.class);
Config clusterConfig=createNiceMock(Config.class);
DesiredConfig desiredConfig=createNiceMock(DesiredConfig.class);
Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent serviceComponent=createNiceMock(ServiceComponent.class);
ServiceComponentHost serviceComponentHost=createNiceMock(ServiceComponentHost.class);
ServiceOsSpecific serviceOsSpecific=createNiceMock(ServiceOsSpecific.class);
ConfigHelper configHelper=createNiceMock(ConfigHelper.class);
Configuration configuration=PowerMock.createStrictMockAndExpectNew(Configuration.class);
Map configMap=createNiceMock(Map.class);
File mockFile=PowerMock.createNiceMock(File.class);
Runtime runtime=createMock(Runtime.class);
Process process=createNiceMock(Process.class);
Map desiredConfigMap=new HashMap();
desiredConfigMap.put("hive-site",desiredConfig);
Map> allConfigTags=new HashMap>();
Map> properties=new HashMap>();
Map> configTags=new HashMap>();
Map>> attributes=new HashMap>>();
ClientConfigFileDefinition clientConfigFileDefinition=new ClientConfigFileDefinition();
clientConfigFileDefinition.setDictionaryName("pig-env");
clientConfigFileDefinition.setFileName("pig-env.sh");
clientConfigFileDefinition.setType("env");
List clientConfigFileDefinitionList=new LinkedList();
clientConfigFileDefinitionList.add(clientConfigFileDefinition);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Request request=PropertyHelper.getReadRequest(ClientConfigResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID,"c1",ClientConfigResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID,ClientConfigResourceProvider.COMPONENT_SERVICE_NAME_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(ClientConfigResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID).equals("c1").toPredicate();
String clusterName="C1";
String serviceName="PIG";
String componentName="PIG";
String hostName="Host100";
String desiredState="INSTALLED";
String stackName="S1";
String stackVersion="V1";
String stackRoot="/tmp/stacks/S1/V1";
String packageFolder=StackManager.COMMON_SERVICES + "/PIG/package";
String commonServicesPath="/var/lib/ambari-server/src/main/resources" + File.separator + "common-services";
if (System.getProperty("os.name").contains("Windows")) {
stackRoot="C:\\tmp\\stacks\\S1\\V1";
packageFolder=StackManager.COMMON_SERVICES + "\\PIG\\package";
}
HashMap hosts=new HashMap();
hosts.put(hostName,host);
HashMap services=new HashMap();
services.put(serviceName,service);
HashMap serviceComponentMap=new HashMap();
serviceComponentMap.put(componentName,serviceComponent);
HashMap serviceComponentHosts=new HashMap();
serviceComponentHosts.put(componentName,serviceComponentHost);
HashMap serviceOsSpecificHashMap=new HashMap();
serviceOsSpecificHashMap.put("key",serviceOsSpecific);
ServiceComponentHostResponse shr1=new ServiceComponentHostResponse(clusterName,serviceName,componentName,hostName,desiredState,"",null,null,null);
Set responses=new LinkedHashSet();
responses.add(shr1);
Map returnConfigMap=new HashMap();
returnConfigMap.put(Configuration.SERVER_TMP_DIR_KEY,Configuration.SERVER_TMP_DIR_DEFAULT);
returnConfigMap.put(Configuration.AMBARI_PYTHON_WRAP_KEY,Configuration.AMBARI_PYTHON_WRAP_DEFAULT);
expect(managementController.getConfigHelper()).andReturn(configHelper);
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster(clusterName)).andReturn(cluster).anyTimes();
expect(configHelper.getEffectiveConfigProperties(cluster,configTags)).andReturn(properties);
expect(clusterConfig.getType()).andReturn(Configuration.HIVE_CONFIG_TAG).anyTimes();
expect(configHelper.getEffectiveConfigAttributes(cluster,configTags)).andReturn(attributes);
expect(configMap.get(Configuration.SERVER_TMP_DIR_KEY)).andReturn(Configuration.SERVER_TMP_DIR_DEFAULT);
expect(configMap.get(Configuration.AMBARI_PYTHON_WRAP_KEY)).andReturn(Configuration.AMBARI_PYTHON_WRAP_DEFAULT);
expect(configuration.getConfigsMap()).andReturn(returnConfigMap);
expect(configuration.getResourceDirPath()).andReturn("/var/lib/ambari-server/src/main/resources");
expect(configuration.getJavaVersion()).andReturn(8);
expect(configuration.areHostsSysPrepped()).andReturn("false");
expect(configuration.getExternalScriptTimeout()).andReturn(Integer.parseInt(Configuration.EXTERNAL_SCRIPT_TIMEOUT_DEFAULT));
Map props=new HashMap();
props.put(Configuration.HIVE_METASTORE_PASSWORD_PROPERTY,"pass");
props.put("key","value");
expect(clusterConfig.getProperties()).andReturn(props);
expect(configHelper.getEffectiveDesiredTags(cluster,hostName)).andReturn(allConfigTags);
expect(cluster.getClusterName()).andReturn(clusterName);
expect(managementController.getHostComponents((Set)anyObject())).andReturn(responses).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(stackId);
PowerMock.mockStaticPartial(StageUtils.class,"getClusterHostInfo");
Map> clusterHostInfo=new HashMap>();
Set all_hosts=new HashSet(Arrays.asList("Host100","Host101","Host102"));
Set some_hosts=new HashSet(Arrays.asList("0-1","2"));
Set ohter_hosts=new HashSet(Arrays.asList("0,1"));
Set clusterHostTypes=new HashSet(Arrays.asList("nm_hosts","hs_host","namenode_host","rm_host","snamenode_host","slave_hosts","zookeeper_hosts"));
for ( String hostTypes : clusterHostTypes) {
if (hostTypes.equals("slave_hosts")) {
clusterHostInfo.put(hostTypes,ohter_hosts);
}
else {
clusterHostInfo.put(hostTypes,some_hosts);
}
}
Map stringHostMap=new HashMap();
stringHostMap.put(hostName,host);
clusterHostInfo.put("all_hosts",all_hosts);
expect(StageUtils.getClusterHostInfo(cluster)).andReturn(clusterHostInfo);
expect(stackId.getStackName()).andReturn(stackName).anyTimes();
expect(stackId.getStackVersion()).andReturn(stackVersion).anyTimes();
expect(ambariMetaInfo.getComponent(stackName,stackVersion,serviceName,componentName)).andReturn(componentInfo);
expect(ambariMetaInfo.getService(stackName,stackVersion,serviceName)).andReturn(serviceInfo);
expect(serviceInfo.getServicePackageFolder()).andReturn(packageFolder);
expect(ambariMetaInfo.getComponent((String)anyObject(),(String)anyObject(),(String)anyObject(),(String)anyObject())).andReturn(componentInfo).anyTimes();
expect(componentInfo.getCommandScript()).andReturn(commandScriptDefinition);
expect(componentInfo.getClientConfigFiles()).andReturn(clientConfigFileDefinitionList);
expect(cluster.getConfig("hive-site",null)).andReturn(clusterConfig);
expect(cluster.getDesiredConfigs()).andReturn(desiredConfigMap);
expect(clusters.getHost(hostName)).andReturn(host);
HashMap rcaParams=new HashMap();
rcaParams.put("key","value");
expect(managementController.getRcaParameters()).andReturn(rcaParams).anyTimes();
expect(ambariMetaInfo.getService(stackName,stackVersion,serviceName)).andReturn(serviceInfo);
expect(serviceInfo.getOsSpecifics()).andReturn(new HashMap()).anyTimes();
Set userSet=new HashSet();
userSet.add("hdfs");
expect(configHelper.getPropertyValuesWithPropertyType(stackId,PropertyInfo.PropertyType.USER,cluster)).andReturn(userSet);
PowerMock.expectNew(File.class,new Class>[]{String.class},anyObject(String.class)).andReturn(mockFile).anyTimes();
PowerMock.createNiceMockAndExpectNew(PrintWriter.class,anyObject());
expect(mockFile.getParent()).andReturn("");
PowerMock.mockStatic(Runtime.class);
expect(mockFile.exists()).andReturn(true);
String commandLine="ambari-python-wrap " + commonServicesPath + "/PIG/package/null generate_configs null "+ commonServicesPath+ "/PIG/package /var/lib/ambari-server/tmp/structured-out.json "+ "INFO /var/lib/ambari-server/tmp";
if (System.getProperty("os.name").contains("Windows")) {
commandLine="ambari-python-wrap " + commonServicesPath + "\\PIG\\package\\null generate_configs null "+ commonServicesPath+ "\\PIG\\package /var/lib/ambari-server/tmp\\structured-out.json "+ "INFO /var/lib/ambari-server/tmp";
}
ProcessBuilder processBuilder=PowerMock.createNiceMock(ProcessBuilder.class);
PowerMock.expectNew(ProcessBuilder.class,Arrays.asList(commandLine.split("\\s+"))).andReturn(processBuilder).once();
expect(processBuilder.start()).andReturn(process).once();
InputStream inputStream=new ByteArrayInputStream("some logging info".getBytes());
expect(process.getInputStream()).andReturn(inputStream);
replay(managementController,clusters,cluster,ambariMetaInfo,stackId,componentInfo,commandScriptDefinition,clusterConfig,host,service,serviceComponent,serviceComponentHost,serviceInfo,configHelper,runtime,process,configMap);
PowerMock.replayAll();
Set resources=provider.getResources(request,predicate);
assertFalse(resources.isEmpty());
verify(managementController,clusters,cluster,ambariMetaInfo,stackId,componentInfo,commandScriptDefinition,clusterConfig,host,service,serviceComponent,serviceComponentHost,serviceInfo,configHelper,runtime,process);
PowerMock.verifyAll();
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.ClientConfig;
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
StackId stackId=createNiceMock(StackId.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
ServiceInfo serviceInfo=createNiceMock(ServiceInfo.class);
CommandScriptDefinition commandScriptDefinition=createNiceMock(CommandScriptDefinition.class);
Config clusterConfig=createNiceMock(Config.class);
DesiredConfig desiredConfig=createNiceMock(DesiredConfig.class);
Host host=createNiceMock(Host.class);
Service service=createNiceMock(Service.class);
ServiceComponent serviceComponent=createNiceMock(ServiceComponent.class);
ServiceComponentHost serviceComponentHost=createNiceMock(ServiceComponentHost.class);
ServiceOsSpecific serviceOsSpecific=createNiceMock(ServiceOsSpecific.class);
ConfigHelper configHelper=createNiceMock(ConfigHelper.class);
Configuration configuration=PowerMock.createStrictMockAndExpectNew(Configuration.class);
Map configMap=createNiceMock(Map.class);
File mockFile=PowerMock.createNiceMock(File.class);
Runtime runtime=createMock(Runtime.class);
Process process=createNiceMock(Process.class);
Map desiredConfigMap=new HashMap();
desiredConfigMap.put("hive-site",desiredConfig);
Map> allConfigTags=new HashMap>();
Map> properties=new HashMap>();
Map> configTags=new HashMap>();
Map>> attributes=new HashMap>>();
ClientConfigFileDefinition clientConfigFileDefinition=new ClientConfigFileDefinition();
clientConfigFileDefinition.setDictionaryName("pig-env");
clientConfigFileDefinition.setFileName("pig-env.sh");
clientConfigFileDefinition.setType("env");
List clientConfigFileDefinitionList=new LinkedList();
clientConfigFileDefinitionList.add(clientConfigFileDefinition);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Request request=PropertyHelper.getReadRequest(ClientConfigResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID,"c1",ClientConfigResourceProvider.COMPONENT_COMPONENT_NAME_PROPERTY_ID,ClientConfigResourceProvider.COMPONENT_SERVICE_NAME_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(ClientConfigResourceProvider.COMPONENT_CLUSTER_NAME_PROPERTY_ID).equals("c1").toPredicate();
String clusterName="C1";
String serviceName="PIG";
String componentName="PIG";
String hostName="Host100";
String desiredState="INSTALLED";
String stackName="S1";
String stackVersion="V1";
String stackRoot="/tmp/stacks/S1/V1";
String packageFolder="PIG/package";
if (System.getProperty("os.name").contains("Windows")) {
stackRoot="C:\\tmp\\stacks\\S1\\V1";
packageFolder="PIG\\package";
}
HashMap hosts=new HashMap();
hosts.put(hostName,host);
HashMap services=new HashMap();
services.put(serviceName,service);
HashMap serviceComponentMap=new HashMap();
serviceComponentMap.put(componentName,serviceComponent);
HashMap serviceComponentHosts=new HashMap();
serviceComponentHosts.put(componentName,serviceComponentHost);
HashMap serviceOsSpecificHashMap=new HashMap();
serviceOsSpecificHashMap.put("key",serviceOsSpecific);
ServiceComponentHostResponse shr1=new ServiceComponentHostResponse(clusterName,serviceName,componentName,hostName,desiredState,"",null,null,null);
Set responses=new LinkedHashSet();
responses.add(shr1);
Map returnConfigMap=new HashMap();
returnConfigMap.put(Configuration.SERVER_TMP_DIR_KEY,Configuration.SERVER_TMP_DIR_DEFAULT);
returnConfigMap.put(Configuration.AMBARI_PYTHON_WRAP_KEY,Configuration.AMBARI_PYTHON_WRAP_DEFAULT);
expect(managementController.getConfigHelper()).andReturn(configHelper);
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster(clusterName)).andReturn(cluster).anyTimes();
expect(configHelper.getEffectiveConfigProperties(cluster,configTags)).andReturn(properties);
expect(clusterConfig.getType()).andReturn(Configuration.HIVE_CONFIG_TAG).anyTimes();
expect(configHelper.getEffectiveConfigAttributes(cluster,configTags)).andReturn(attributes);
expect(configMap.get(Configuration.SERVER_TMP_DIR_KEY)).andReturn(Configuration.SERVER_TMP_DIR_DEFAULT);
expect(configMap.get(Configuration.AMBARI_PYTHON_WRAP_KEY)).andReturn(Configuration.AMBARI_PYTHON_WRAP_DEFAULT);
expect(configuration.getConfigsMap()).andReturn(returnConfigMap);
expect(configuration.getResourceDirPath()).andReturn(stackRoot);
expect(configuration.getJavaVersion()).andReturn(8);
expect(configuration.areHostsSysPrepped()).andReturn("false");
expect(configuration.getExternalScriptTimeout()).andReturn(Integer.parseInt(Configuration.EXTERNAL_SCRIPT_TIMEOUT_DEFAULT));
Map props=new HashMap();
props.put(Configuration.HIVE_METASTORE_PASSWORD_PROPERTY,"pass");
props.put("key","value");
expect(clusterConfig.getProperties()).andReturn(props);
expect(configHelper.getEffectiveDesiredTags(cluster,hostName)).andReturn(allConfigTags);
expect(cluster.getClusterName()).andReturn(clusterName);
expect(managementController.getHostComponents((Set)anyObject())).andReturn(responses).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(stackId);
PowerMock.mockStaticPartial(StageUtils.class,"getClusterHostInfo");
Map> clusterHostInfo=new HashMap>();
Set all_hosts=new HashSet(Arrays.asList("Host100","Host101","Host102"));
Set some_hosts=new HashSet(Arrays.asList("0-1","2"));
Set ohter_hosts=new HashSet(Arrays.asList("0,1"));
Set clusterHostTypes=new HashSet(Arrays.asList("nm_hosts","hs_host","namenode_host","rm_host","snamenode_host","slave_hosts","zookeeper_hosts"));
for ( String hostTypes : clusterHostTypes) {
if (hostTypes.equals("slave_hosts")) {
clusterHostInfo.put(hostTypes,ohter_hosts);
}
else {
clusterHostInfo.put(hostTypes,some_hosts);
}
}
Map stringHostMap=new HashMap();
stringHostMap.put(hostName,host);
clusterHostInfo.put("all_hosts",all_hosts);
expect(StageUtils.getClusterHostInfo(cluster)).andReturn(clusterHostInfo);
expect(stackId.getStackName()).andReturn(stackName).anyTimes();
expect(stackId.getStackVersion()).andReturn(stackVersion).anyTimes();
expect(ambariMetaInfo.getComponent(stackName,stackVersion,serviceName,componentName)).andReturn(componentInfo);
expect(ambariMetaInfo.getService(stackName,stackVersion,serviceName)).andReturn(serviceInfo);
expect(serviceInfo.getServicePackageFolder()).andReturn(packageFolder);
expect(ambariMetaInfo.getComponent((String)anyObject(),(String)anyObject(),(String)anyObject(),(String)anyObject())).andReturn(componentInfo).anyTimes();
expect(componentInfo.getCommandScript()).andReturn(commandScriptDefinition);
expect(componentInfo.getClientConfigFiles()).andReturn(clientConfigFileDefinitionList);
expect(cluster.getConfig("hive-site",null)).andReturn(clusterConfig);
expect(cluster.getDesiredConfigs()).andReturn(desiredConfigMap);
expect(clusters.getHost(hostName)).andReturn(host);
HashMap rcaParams=new HashMap();
rcaParams.put("key","value");
expect(managementController.getRcaParameters()).andReturn(rcaParams).anyTimes();
expect(ambariMetaInfo.getService(stackName,stackVersion,serviceName)).andReturn(serviceInfo);
expect(serviceInfo.getOsSpecifics()).andReturn(new HashMap()).anyTimes();
Set userSet=new HashSet();
userSet.add("hdfs");
expect(configHelper.getPropertyValuesWithPropertyType(stackId,PropertyInfo.PropertyType.USER,cluster)).andReturn(userSet);
PowerMock.expectNew(File.class,new Class>[]{String.class},anyObject(String.class)).andReturn(mockFile).anyTimes();
PowerMock.createNiceMockAndExpectNew(PrintWriter.class,anyObject());
expect(mockFile.getParent()).andReturn("");
PowerMock.mockStatic(Runtime.class);
expect(mockFile.exists()).andReturn(true);
String commandLine="ambari-python-wrap /tmp/stacks/S1/V1/PIG/package/null generate_configs null " + "/tmp/stacks/S1/V1/PIG/package /var/lib/ambari-server/tmp/structured-out.json " + "INFO /var/lib/ambari-server/tmp";
if (System.getProperty("os.name").contains("Windows")) {
commandLine="ambari-python-wrap " + stackRoot + "\\PIG\\package\\null generate_configs null "+ stackRoot+ "\\PIG\\package /var/lib/ambari-server/tmp\\structured-out.json "+ "INFO /var/lib/ambari-server/tmp";
}
ProcessBuilder processBuilder=PowerMock.createNiceMock(ProcessBuilder.class);
PowerMock.expectNew(ProcessBuilder.class,Arrays.asList(commandLine.split("\\s+"))).andReturn(processBuilder).once();
expect(processBuilder.start()).andReturn(process).once();
InputStream inputStream=new ByteArrayInputStream("some logging info".getBytes());
expect(process.getInputStream()).andReturn(inputStream);
replay(managementController,clusters,cluster,ambariMetaInfo,stackId,componentInfo,commandScriptDefinition,clusterConfig,host,service,serviceComponent,serviceComponentHost,serviceInfo,configHelper,runtime,process,configMap);
PowerMock.replayAll();
Set resources=provider.getResources(request,predicate);
assertFalse(resources.isEmpty());
verify(managementController,clusters,cluster,ambariMetaInfo,stackId,componentInfo,commandScriptDefinition,clusterConfig,host,service,serviceComponent,serviceComponentHost,serviceInfo,configHelper,runtime,process);
PowerMock.verifyAll();
}
Class: org.apache.ambari.server.controller.internal.ClusterControllerImplTest BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesCheckOrder() throws Exception {
ClusterControllerImpl controller=new ClusterControllerImpl(new TestProviderModule());
Set propertyIds=new HashSet();
Request request=PropertyHelper.getReadRequest(propertyIds);
Iterable iterable=controller.getResourceIterable(Resource.Type.Host,request,null);
String lastHostName=null;
int cnt=0;
for ( Resource resource : iterable) {
Assert.assertEquals(Resource.Type.Host,resource.getType());
String hostName=(String)resource.getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name"));
if (lastHostName != null) {
Assert.assertTrue(hostName.compareTo(lastHostName) > 0);
}
lastHostName=hostName;
++cnt;
}
Assert.assertEquals(4,cnt);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResourcesPageToOffset() throws Exception {
ClusterControllerImpl controller=new ClusterControllerImpl(new TestProviderModule());
Set propertyIds=new HashSet();
Request request=PropertyHelper.getReadRequest(propertyIds);
PageRequest pageRequest=new PageRequestImpl(PageRequest.StartingPoint.OffsetEnd,2,2,null,null);
PageResponse pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
Assert.assertEquals(1,pageResponse.getOffset());
Assert.assertEquals("host:0",pageResponse.getPreviousResource().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals("host:3",pageResponse.getNextResource().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
Iterable iterable=pageResponse.getIterable();
List list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(2,list.size());
Assert.assertEquals("host:1",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:2",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
pageRequest=new PageRequestImpl(PageRequest.StartingPoint.OffsetEnd,3,2,null,null);
pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
Assert.assertEquals(0,pageResponse.getOffset());
Assert.assertNull(pageResponse.getPreviousResource());
Assert.assertEquals("host:3",pageResponse.getNextResource().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
iterable=pageResponse.getIterable();
list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(3,list.size());
Assert.assertEquals("host:0",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:1",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals("host:2",(String)list.get(2).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(2).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesSortedWithPredicateWithItemsTotal() throws Exception {
ClusterControllerImpl controller=new ClusterControllerImpl(new TestProviderModule());
Set propertyIds=new HashSet();
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property("c1/p2").equals(1).toPredicate();
List sortRequestProperties=Collections.singletonList(new SortRequestProperty("Hosts/host_name",SortRequest.Order.DESC));
SortRequest sortRequest=new SortRequestImpl(sortRequestProperties);
PageRequest pageRequest=new PageRequestImpl(PageRequest.StartingPoint.Beginning,1,0,null,null);
PageResponse pageResponse=controller.getResources(Resource.Type.Host,request,predicate,pageRequest,sortRequest);
Iterable iterable=pageResponse.getIterable();
List list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(1,list.size());
Assert.assertEquals(2,pageResponse.getTotalResourceCount().intValue());
Assert.assertEquals("host:3",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
pageRequest=new PageRequestImpl(PageRequest.StartingPoint.OffsetStart,1,1,null,null);
pageResponse=controller.getResources(Resource.Type.Host,request,predicate,pageRequest,sortRequest);
iterable=pageResponse.getIterable();
list.clear();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(1,list.size());
Assert.assertEquals(2,pageResponse.getTotalResourceCount().intValue());
Assert.assertEquals("host:1",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
}
InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteResources() throws Exception {
TestProviderModule providerModule=new TestProviderModule();
TestHostResourceProvider resourceProvider=(TestHostResourceProvider)providerModule.getResourceProvider(Resource.Type.Host);
ClusterController controller=new ClusterControllerImpl(providerModule);
Predicate predicate=new PredicateBuilder().property("c1/p2").equals(1).toPredicate();
controller.deleteResources(Resource.Type.Host,predicate);
Assert.assertEquals(TestHostResourceProvider.Action.Delete,resourceProvider.getLastAction());
Assert.assertNull(resourceProvider.getLastRequest());
Assert.assertSame(predicate,resourceProvider.getLastPredicate());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesPageFromStart() throws Exception {
ClusterControllerImpl controller=new ClusterControllerImpl(new TestProviderModule());
Set propertyIds=new HashSet();
Request request=PropertyHelper.getReadRequest(propertyIds);
PageRequest pageRequest=new PageRequestImpl(PageRequest.StartingPoint.Beginning,2,0,null,null);
PageResponse pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
Iterable iterable=pageResponse.getIterable();
List list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(2,list.size());
Assert.assertEquals("host:0",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:1",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
pageRequest=new PageRequestImpl(PageRequest.StartingPoint.Beginning,3,0,null,null);
pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
iterable=pageResponse.getIterable();
list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(3,list.size());
Assert.assertEquals("host:0",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:1",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals("host:2",(String)list.get(2).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(2).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateResourcesResolvePredicate() throws Exception {
TestProviderModule providerModule=new TestProviderModule();
TestHostResourceProvider resourceProvider=(TestHostResourceProvider)providerModule.getResourceProvider(Resource.Type.Host);
ClusterController controller=new ClusterControllerImpl(providerModule);
Map propertyMap=new HashMap();
propertyMap.put(PropertyHelper.getPropertyId("c1","p1"),99);
propertyMap.put(PropertyHelper.getPropertyId("c1","p2"),2);
Request request=PropertyHelper.getUpdateRequest(propertyMap,null);
Predicate predicate=new PredicateBuilder().property("c3/p6").equals(1).toPredicate();
controller.updateResources(Resource.Type.Host,request,predicate);
Assert.assertEquals(TestHostResourceProvider.Action.Update,resourceProvider.getLastAction());
Assert.assertSame(request,resourceProvider.getLastRequest());
Predicate lastPredicate=resourceProvider.getLastPredicate();
Assert.assertFalse(predicate.equals(lastPredicate));
Set predicatePropertyIds=PredicateHelper.getPropertyIds(lastPredicate);
Collection keyPropertyIds=resourceProvider.getKeyPropertyIds().values();
Assert.assertEquals(predicatePropertyIds.size(),keyPropertyIds.size());
Assert.assertTrue(keyPropertyIds.containsAll(predicatePropertyIds));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteResourcesResolvePredicate() throws Exception {
TestProviderModule providerModule=new TestProviderModule();
TestHostResourceProvider resourceProvider=(TestHostResourceProvider)providerModule.getResourceProvider(Resource.Type.Host);
ClusterController controller=new ClusterControllerImpl(providerModule);
Predicate predicate=new PredicateBuilder().property("c3/p6").equals(1).toPredicate();
controller.deleteResources(Resource.Type.Host,predicate);
Assert.assertEquals(TestHostResourceProvider.Action.Delete,resourceProvider.getLastAction());
Assert.assertNull(resourceProvider.getLastRequest());
Predicate lastPredicate=resourceProvider.getLastPredicate();
Assert.assertFalse(predicate.equals(lastPredicate));
Set predicatePropertyIds=PredicateHelper.getPropertyIds(lastPredicate);
Collection keyPropertyIds=resourceProvider.getKeyPropertyIds().values();
Assert.assertEquals(predicatePropertyIds.size(),keyPropertyIds.size());
Assert.assertTrue(keyPropertyIds.containsAll(predicatePropertyIds));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesPageToEnd() throws Exception {
ClusterControllerImpl controller=new ClusterControllerImpl(new TestProviderModule());
Set propertyIds=new HashSet();
Request request=PropertyHelper.getReadRequest(propertyIds);
PageRequest pageRequest=new PageRequestImpl(PageRequest.StartingPoint.End,2,0,null,null);
PageResponse pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
Iterable iterable=pageResponse.getIterable();
List list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(2,list.size());
Assert.assertEquals("host:2",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:3",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
pageRequest=new PageRequestImpl(PageRequest.StartingPoint.End,3,0,null,null);
pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
iterable=pageResponse.getIterable();
list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(3,list.size());
Assert.assertEquals("host:1",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:2",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals("host:3",(String)list.get(2).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(2).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources() throws Exception {
TestProviderModule providerModule=new TestProviderModule();
TestHostResourceProvider resourceProvider=(TestHostResourceProvider)providerModule.getResourceProvider(Resource.Type.Host);
ClusterController controller=new ClusterControllerImpl(providerModule);
Set> properties=new HashSet>();
Map propertyMap=new HashMap();
propertyMap.put(PropertyHelper.getPropertyId("c1","p1"),99);
propertyMap.put(PropertyHelper.getPropertyId("c1","p2"),2);
properties.add(propertyMap);
Request request=PropertyHelper.getCreateRequest(properties,null);
controller.createResources(Resource.Type.Host,request);
Assert.assertEquals(TestHostResourceProvider.Action.Create,resourceProvider.getLastAction());
Assert.assertSame(request,resourceProvider.getLastRequest());
Assert.assertNull(resourceProvider.getLastPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateResources() throws Exception {
TestProviderModule providerModule=new TestProviderModule();
TestHostResourceProvider resourceProvider=(TestHostResourceProvider)providerModule.getResourceProvider(Resource.Type.Host);
ClusterController controller=new ClusterControllerImpl(providerModule);
Map propertyMap=new HashMap();
propertyMap.put(PropertyHelper.getPropertyId("c1","p1"),99);
propertyMap.put(PropertyHelper.getPropertyId("c1","p2"),2);
Request request=PropertyHelper.getUpdateRequest(propertyMap,null);
Predicate predicate=new PredicateBuilder().property("c1/p2").equals(1).toPredicate();
controller.updateResources(Resource.Type.Host,request,predicate);
Assert.assertEquals(TestHostResourceProvider.Action.Update,resourceProvider.getLastAction());
Assert.assertSame(request,resourceProvider.getLastRequest());
Assert.assertSame(predicate,resourceProvider.getLastPredicate());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testComparator(){
TestProviderModule providerModule=new TestProviderModule();
ClusterControllerImpl controller=new ClusterControllerImpl(providerModule);
Comparator comparator=controller.getComparator();
Resource resource1=new ResourceImpl(Resource.Type.Host);
Resource resource2=new ResourceImpl(Resource.Type.Host);
Resource resource3=new ResourceImpl(Resource.Type.Service);
Assert.assertEquals(0,comparator.compare(resource1,resource2));
Assert.assertEquals(0,comparator.compare(resource2,resource1));
Assert.assertTrue(comparator.compare(resource1,resource3) < 0);
Assert.assertTrue(comparator.compare(resource3,resource1) > 0);
resource1.setProperty(PropertyHelper.getPropertyId("Hosts","cluster_name"),"c1");
resource1.setProperty(PropertyHelper.getPropertyId("Hosts","host_name"),"h1");
resource2.setProperty(PropertyHelper.getPropertyId("Hosts","cluster_name"),"c1");
resource2.setProperty(PropertyHelper.getPropertyId("Hosts","host_name"),"h1");
Assert.assertEquals(0,comparator.compare(resource1,resource2));
Assert.assertEquals(0,comparator.compare(resource2,resource1));
resource2.setProperty(PropertyHelper.getPropertyId("Hosts","host_name"),"h2");
Assert.assertTrue(comparator.compare(resource1,resource2) < 0);
Assert.assertTrue(comparator.compare(resource2,resource1) > 0);
resource2.setProperty(PropertyHelper.getPropertyId("Hosts","host_name"),"h1");
resource1.setProperty("p1","foo");
resource2.setProperty("p1","foo");
Assert.assertEquals(0,comparator.compare(resource1,resource2));
Assert.assertEquals(0,comparator.compare(resource2,resource1));
resource2.setProperty("p1","bar");
Assert.assertFalse(comparator.compare(resource1,resource2) == 0);
Assert.assertFalse(comparator.compare(resource2,resource1) == 0);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResourcesPageFromOffset() throws Exception {
ClusterControllerImpl controller=new ClusterControllerImpl(new TestProviderModule());
Set propertyIds=new HashSet();
Request request=PropertyHelper.getReadRequest(propertyIds);
PageRequest pageRequest=new PageRequestImpl(PageRequest.StartingPoint.OffsetStart,2,1,null,null);
PageResponse pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
Assert.assertEquals(1,pageResponse.getOffset());
Assert.assertEquals("host:0",pageResponse.getPreviousResource().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals("host:3",pageResponse.getNextResource().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Iterable iterable=pageResponse.getIterable();
List list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(2,list.size());
Assert.assertEquals("host:1",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:2",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
pageRequest=new PageRequestImpl(PageRequest.StartingPoint.OffsetStart,3,0,null,null);
pageResponse=controller.getResources(Resource.Type.Host,request,null,pageRequest,null);
Assert.assertEquals(0,pageResponse.getOffset());
Assert.assertNull(pageResponse.getPreviousResource());
Assert.assertEquals("host:3",pageResponse.getNextResource().getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
iterable=pageResponse.getIterable();
list=new LinkedList();
for ( Resource resource : iterable) {
list.add(resource);
}
Assert.assertEquals(3,list.size());
Assert.assertEquals("host:0",(String)list.get(0).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(0).getType());
Assert.assertEquals("host:1",(String)list.get(1).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(1).getType());
Assert.assertEquals("host:2",(String)list.get(2).getPropertyValue(PropertyHelper.getPropertyId("Hosts","host_name")));
Assert.assertEquals(Resource.Type.Host,list.get(2).getType());
Assert.assertEquals(4,pageResponse.getTotalResourceCount().intValue());
}
Class: org.apache.ambari.server.controller.internal.ClusterResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testCreateResource_blueprint_With_ProvisionAction() throws Exception {
Set> requestProperties=createBlueprintRequestProperties(CLUSTER_NAME,BLUEPRINT_NAME);
Map properties=requestProperties.iterator().next();
properties.put(ProvisionClusterRequest.PROVISION_ACTION_PROPERTY,"INSTALL_ONLY");
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(Request.REQUEST_INFO_BODY_PROPERTY,"{}");
expect(request.getProperties()).andReturn(requestProperties).anyTimes();
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties).anyTimes();
expect(securityFactory.createSecurityConfigurationFromRequest(anyObject(HashMap.class),anyBoolean())).andReturn(null).once();
expect(topologyFactory.createProvisionClusterRequest(properties,null)).andReturn(topologyRequest).once();
expect(topologyManager.provisionCluster(topologyRequest)).andReturn(requestStatusResponse).once();
expect(requestStatusResponse.getRequestId()).andReturn(5150L).anyTimes();
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
RequestStatus requestStatus=provider.createResources(request);
assertEquals(5150L,requestStatus.getRequestResource().getPropertyValue(PropertyHelper.getPropertyId("Requests","id")));
assertEquals(Resource.Type.Request,requestStatus.getRequestResource().getType());
assertEquals("Accepted",requestStatus.getRequestResource().getPropertyValue(PropertyHelper.getPropertyId("Requests","status")));
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResourcesWithRetry() throws Exception {
RetryHelper.init(3);
Resource.Type type=Resource.Type.Cluster;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
managementController.createCluster(AbstractResourceProviderTest.Matcher.getClusterRequest(null,"Cluster100","HDP-0.1",null));
expectLastCall().andThrow(new DatabaseException("test"){
}
).once().andVoid().atLeastOnce();
replay(managementController,response);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
Set> propertySet=new LinkedHashSet>();
Map properties=new LinkedHashMap();
properties.put(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID,"Cluster100");
properties.put(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID,"HDP-0.1");
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,null);
provider.createResources(request);
ResourceProviderEvent lastEvent=observer.getLastEvent();
Assert.assertNotNull(lastEvent);
Assert.assertEquals(Resource.Type.Cluster,lastEvent.getResourceType());
Assert.assertEquals(ResourceProviderEvent.Type.Create,lastEvent.getType());
Assert.assertEquals(request,lastEvent.getRequest());
Assert.assertNull(lastEvent.getPredicate());
verify(managementController,response);
RetryHelper.init(0);
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateResource_blueprint_withSecurityConfiguration() throws Exception {
Set> requestProperties=createBlueprintRequestProperties(CLUSTER_NAME,BLUEPRINT_NAME);
Map properties=requestProperties.iterator().next();
SecurityConfiguration securityConfiguration=new SecurityConfiguration(SecurityType.KERBEROS,"testRef",null);
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(Request.REQUEST_INFO_BODY_PROPERTY,"{\"security\" : {\n\"type\" : \"KERBEROS\",\n\"kerberos_descriptor_reference\" : " + "\"testRef\"\n}}");
expect(request.getProperties()).andReturn(requestProperties).anyTimes();
expect(request.getRequestInfoProperties()).andReturn(requestInfoProperties).anyTimes();
expect(topologyFactory.createProvisionClusterRequest(properties,securityConfiguration)).andReturn(topologyRequest).once();
expect(securityFactory.createSecurityConfigurationFromRequest(anyObject(HashMap.class),anyBoolean())).andReturn(securityConfiguration).once();
expect(topologyManager.provisionCluster(topologyRequest)).andReturn(requestStatusResponse).once();
expect(requestStatusResponse.getRequestId()).andReturn(5150L).anyTimes();
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
RequestStatus requestStatus=provider.createResources(request);
assertEquals(5150L,requestStatus.getRequestResource().getPropertyValue(PropertyHelper.getPropertyId("Requests","id")));
assertEquals(Resource.Type.Request,requestStatus.getRequestResource().getType());
assertEquals("Accepted",requestStatus.getRequestResource().getPropertyValue(PropertyHelper.getPropertyId("Requests","status")));
verifyAll();
}
Class: org.apache.ambari.server.controller.internal.ClusterStackVersionResourceProviderTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests manual finalization scenario
* @throws Exception
*/
@Test public void testUpdateResourcesWithForce() throws Exception {
Resource.Type type=Resource.Type.ClusterStackVersion;
String clusterName="Cluster100";
AmbariManagementController managementController=createMock(AmbariManagementController.class);
StackId stackId=new StackId("HDP","2.0.1");
StackEntity stackEntity=stackDAO.find(stackId.getStackName(),stackId.getStackVersion());
Assert.assertNotNull(stackEntity);
ResourceTypeEntity resourceTypeEntity=resourceTypeDAO.findById(ResourceType.CLUSTER.getId());
if (resourceTypeEntity == null) {
resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(ResourceType.CLUSTER.getId());
resourceTypeEntity.setName(ResourceType.CLUSTER.name());
resourceTypeEntity=resourceTypeDAO.merge(resourceTypeEntity);
}
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
final Host host1=createNiceMock("host1",Host.class);
final Host host2=createNiceMock("host2",Host.class);
expect(host1.getHostName()).andReturn("host1").anyTimes();
expect(host2.getHostName()).andReturn("host2").anyTimes();
replay(host1,host2);
ServiceComponentHost sch=createMock(ServiceComponentHost.class);
List schs=Collections.singletonList(sch);
Cluster cluster=createNiceMock(Cluster.class);
cluster.setClusterName(clusterName);
ArrayList hosts=new ArrayList(){
{
add(host1);
add(host2);
}
}
;
Clusters clusters=createNiceMock(Clusters.class);
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
RepositoryVersionEntity repoVersion=new RepositoryVersionEntity();
repoVersion.setOperatingSystems(operatingSystemsJson);
StackEntity newDesiredStack=stackDAO.find("HDP","2.0.1");
repoVersion.setStack(newDesiredStack);
final ServiceOsSpecific.Package hivePackage=new ServiceOsSpecific.Package();
hivePackage.setName("hive");
final ServiceOsSpecific.Package mysqlPackage=new ServiceOsSpecific.Package();
mysqlPackage.setName("mysql");
mysqlPackage.setSkipUpgrade(Boolean.TRUE);
List packages=new ArrayList(){
{
add(hivePackage);
add(mysqlPackage);
}
}
;
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider csvResourceProvider=createNiceMock(ClusterStackVersionResourceProvider.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Map> hostConfigTags=new HashMap>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class),anyObject(String.class))).andReturn(hostConfigTags);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),(Map)anyObject(List.class),anyObject(String.class))).andReturn(packages).anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class),anyObject(Map.class),eq(managementController))).andReturn(csvResourceProvider).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(stackId);
expect(cluster.getServiceComponentHosts(anyObject(String.class))).andReturn(schs).anyTimes();
RepositoryVersionEntity currentRepo=new RepositoryVersionEntity();
currentRepo.setVersion("2.2.2.0-2122");
ClusterVersionEntity current=new ClusterVersionEntity();
current.setRepositoryVersion(currentRepo);
Capture capturedStackId=new Capture();
cluster.setDesiredStackVersion(capture(capturedStackId));
expectLastCall().once();
expect(cluster.getHosts()).andReturn(hosts).anyTimes();
expect(cluster.getCurrentClusterVersion()).andReturn(current).anyTimes();
expect(sch.getServiceName()).andReturn("HIVE").anyTimes();
expect(repositoryVersionDAOMock.findByDisplayName(anyObject(String.class))).andReturn(repoVersion);
clusterVersionDAO.updateVersions((Long)anyObject(),(RepositoryVersionEntity)anyObject(),(RepositoryVersionEntity)anyObject());
expectLastCall().once();
hostVersionDAO.updateVersions((RepositoryVersionEntity)anyObject(),(RepositoryVersionEntity)anyObject());
expectLastCall().once();
hostComponentStateDAO.updateVersions((String)anyObject());
expectLastCall().once();
replay(managementController,response,clusters,resourceProviderFactory,csvResourceProvider,cluster,repositoryVersionDAOMock,configHelper,sch,actionManager,clusterVersionDAO,hostVersionDAO,hostComponentStateDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
injector.injectMembers(provider);
Map properties=new LinkedHashMap();
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID,clusterName);
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STATE_PROPERTY_ID,"CURRENT");
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID,"HDP-2.2.2.0-2561");
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_FORCE,"true");
Request request=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(request,null);
verify(managementController,response,clusterVersionDAO,hostVersionDAO,hostComponentStateDAO);
Assert.assertEquals(capturedStackId.getValue(),new StackId(newDesiredStack.getStackName(),newDesiredStack.getStackVersion()));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests manual finalization scenario
* @throws Exception
*/
@Test public void testUpdateResources() throws Exception {
Resource.Type type=Resource.Type.ClusterStackVersion;
String clusterName="Cluster100";
AmbariManagementController managementController=createMock(AmbariManagementController.class);
StackId stackId=new StackId("HDP","2.0.1");
StackEntity stackEntity=stackDAO.find(stackId.getStackName(),stackId.getStackVersion());
Assert.assertNotNull(stackEntity);
ResourceTypeEntity resourceTypeEntity=resourceTypeDAO.findById(ResourceType.CLUSTER.getId());
if (resourceTypeEntity == null) {
resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(ResourceType.CLUSTER.getId());
resourceTypeEntity.setName(ResourceType.CLUSTER.name());
resourceTypeEntity=resourceTypeDAO.merge(resourceTypeEntity);
}
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
final Host host1=createNiceMock("host1",Host.class);
final Host host2=createNiceMock("host2",Host.class);
expect(host1.getHostName()).andReturn("host1").anyTimes();
expect(host2.getHostName()).andReturn("host2").anyTimes();
replay(host1,host2);
ServiceComponentHost sch=createMock(ServiceComponentHost.class);
List schs=Collections.singletonList(sch);
Cluster cluster=createNiceMock(Cluster.class);
cluster.setClusterName(clusterName);
ArrayList hosts=new ArrayList(){
{
add(host1);
add(host2);
}
}
;
Clusters clusters=createNiceMock(Clusters.class);
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
RepositoryVersionEntity repoVersion=new RepositoryVersionEntity();
repoVersion.setOperatingSystems(operatingSystemsJson);
StackEntity newDesiredStack=stackDAO.find("HDP","2.0.1");
repoVersion.setStack(newDesiredStack);
final ServiceOsSpecific.Package hivePackage=new ServiceOsSpecific.Package();
hivePackage.setName("hive");
final ServiceOsSpecific.Package mysqlPackage=new ServiceOsSpecific.Package();
mysqlPackage.setName("mysql");
mysqlPackage.setSkipUpgrade(Boolean.TRUE);
List packages=new ArrayList(){
{
add(hivePackage);
add(mysqlPackage);
}
}
;
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider csvResourceProvider=createNiceMock(ClusterStackVersionResourceProvider.class);
CommandReport report=createNiceMock(CommandReport.class);
FinalizeUpgradeAction finalizeUpgradeAction=createNiceMock(FinalizeUpgradeAction.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Map> hostConfigTags=new HashMap>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class),anyObject(String.class))).andReturn(hostConfigTags);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),(Map)anyObject(List.class),anyObject(String.class))).andReturn(packages).anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class),anyObject(Map.class),eq(managementController))).andReturn(csvResourceProvider).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(stackId);
expect(cluster.getServiceComponentHosts(anyObject(String.class))).andReturn(schs).anyTimes();
Capture capturedStackId=new Capture();
cluster.setDesiredStackVersion(capture(capturedStackId));
expectLastCall().once();
expect(cluster.getHosts()).andReturn(hosts).anyTimes();
expect(sch.getServiceName()).andReturn("HIVE").anyTimes();
expect(repositoryVersionDAOMock.findByDisplayName(anyObject(String.class))).andReturn(repoVersion);
expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.emptyList()).anyTimes();
expect(finalizeUpgradeAction.execute(null)).andReturn(report);
expect(report.getStdOut()).andReturn("Dummy stdout");
expect(report.getStdErr()).andReturn("Dummy stderr");
expect(report.getStatus()).andReturn("COMPLETED");
replay(managementController,response,clusters,resourceProviderFactory,csvResourceProvider,cluster,repositoryVersionDAOMock,configHelper,sch,actionManager,finalizeUpgradeAction,report,stageFactory);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
injector.injectMembers(provider);
Field field=ClusterStackVersionResourceProvider.class.getDeclaredField("finalizeUpgradeAction");
field.setAccessible(true);
field.set(provider,finalizeUpgradeAction);
Map properties=new LinkedHashMap();
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID,clusterName);
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STATE_PROPERTY_ID,"CURRENT");
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID,"HDP-2.2.2.0-2561");
Request request=PropertyHelper.getUpdateRequest(properties,null);
provider.updateResources(request,null);
verify(managementController,response);
Assert.assertEquals(capturedStackId.getValue(),new StackId(newDesiredStack.getStackName(),newDesiredStack.getStackVersion()));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources() throws Exception {
Resource.Type type=Resource.Type.ClusterStackVersion;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
StackId stackId=new StackId("HDP","2.0.1");
Map hostsForCluster=new HashMap();
int hostCount=10;
for (int i=0; i < hostCount; i++) {
String hostname="host" + i;
Host host=createNiceMock(hostname,Host.class);
expect(host.getHostName()).andReturn(hostname).anyTimes();
expect(host.getOsFamily()).andReturn("redhat6").anyTimes();
expect(host.getMaintenanceState(EasyMock.anyLong())).andReturn(MaintenanceState.OFF).anyTimes();
replay(host);
hostsForCluster.put(hostname,host);
}
final ServiceComponentHost schDatanode=createMock(ServiceComponentHost.class);
expect(schDatanode.getServiceName()).andReturn("HDFS").anyTimes();
expect(schDatanode.getServiceComponentName()).andReturn("DATANODE").anyTimes();
final ServiceComponentHost schNamenode=createMock(ServiceComponentHost.class);
expect(schNamenode.getServiceName()).andReturn("HDFS").anyTimes();
expect(schNamenode.getServiceComponentName()).andReturn("NAMENODE").anyTimes();
final ServiceComponentHost schAMS=createMock(ServiceComponentHost.class);
expect(schAMS.getServiceName()).andReturn("AMBARI_METRICS").anyTimes();
expect(schAMS.getServiceComponentName()).andReturn("METRICS_COLLECTOR").anyTimes();
final List schsH1=new ArrayList(){
{
add(schDatanode);
add(schNamenode);
add(schAMS);
}
}
;
final List schsH2=new ArrayList(){
{
add(schAMS);
}
}
;
RepositoryVersionEntity repoVersion=new RepositoryVersionEntity();
repoVersion.setId(1l);
repoVersion.setOperatingSystems(operatingSystemsJson);
ServiceOsSpecific.Package hdfsPackage=new ServiceOsSpecific.Package();
hdfsPackage.setName("hdfs");
List packages=Collections.singletonList(hdfsPackage);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider csvResourceProvider=createNiceMock(ClusterStackVersionResourceProvider.class);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Map> hostConfigTags=new HashMap>();
expect(configHelper.getEffectiveDesiredTags(anyObject(ClusterImpl.class),anyObject(String.class))).andReturn(hostConfigTags);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getJdkResourceUrl()).andReturn("/JdkResourceUrl").anyTimes();
expect(managementController.getPackagesForServiceHost(anyObject(ServiceInfo.class),(Map)anyObject(List.class),anyObject(String.class))).andReturn(packages).times((hostCount - 1) * 2);
expect(resourceProviderFactory.getHostResourceProvider(anyObject(Set.class),anyObject(Map.class),eq(managementController))).andReturn(csvResourceProvider).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(cluster);
expect(clusters.getHostsForCluster(anyObject(String.class))).andReturn(hostsForCluster).anyTimes();
String clusterName="Cluster100";
expect(cluster.getClusterId()).andReturn(1L).anyTimes();
expect(cluster.getHosts()).andReturn(hostsForCluster.values()).atLeastOnce();
expect(cluster.getServices()).andReturn(new HashMap()).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(stackId);
expect(cluster.getServiceComponentHosts(anyObject(String.class))).andAnswer(new IAnswer>(){
@Override public List answer() throws Throwable {
String hostname=(String)EasyMock.getCurrentArguments()[0];
if (hostname.equals("host2")) {
return schsH2;
}
else {
return schsH1;
}
}
}
).anyTimes();
ExecutionCommand executionCommand=createNiceMock(ExecutionCommand.class);
ExecutionCommandWrapper executionCommandWrapper=createNiceMock(ExecutionCommandWrapper.class);
expect(executionCommandWrapper.getExecutionCommand()).andReturn(executionCommand).anyTimes();
Stage stage=createNiceMock(Stage.class);
expect(stage.getExecutionCommandWrapper(anyObject(String.class),anyObject(String.class))).andReturn(executionCommandWrapper).anyTimes();
Map successFactors=new HashMap<>();
expect(stage.getSuccessFactors()).andReturn(successFactors).atLeastOnce();
expect(stageFactory.createNew(anyLong(),anyObject(String.class),anyObject(String.class),anyLong(),anyObject(String.class),anyObject(String.class),anyObject(String.class),anyObject(String.class))).andReturn(stage).times((int)Math.ceil(hostCount / MAX_TASKS_PER_STAGE));
expect(repositoryVersionDAOMock.findByStackAndVersion(anyObject(StackId.class),anyObject(String.class))).andReturn(repoVersion);
expect(actionManager.getRequestTasks(anyLong())).andReturn(Collections.emptyList()).anyTimes();
ClusterEntity clusterEntity=new ClusterEntity();
clusterEntity.setClusterId(1l);
clusterEntity.setClusterName(clusterName);
ClusterVersionEntity cve=new ClusterVersionEntity(clusterEntity,repoVersion,RepositoryVersionState.INSTALL_FAILED,0,"");
expect(clusterVersionDAO.findByClusterAndStackAndVersion(anyObject(String.class),anyObject(StackId.class),anyObject(String.class))).andReturn(cve);
TopologyManager topologyManager=injector.getInstance(TopologyManager.class);
StageUtils.setTopologyManager(topologyManager);
replay(managementController,response,clusters,resourceProviderFactory,csvResourceProvider,cluster,repositoryVersionDAOMock,configHelper,schDatanode,schNamenode,schAMS,actionManager,executionCommand,executionCommandWrapper,stage,stageFactory,clusterVersionDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
injector.injectMembers(provider);
Set> propertySet=new LinkedHashSet>();
Map properties=new LinkedHashMap();
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_CLUSTER_NAME_PROPERTY_ID,"Cluster100");
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_REPOSITORY_VERSION_PROPERTY_ID,"2.2.0.1-885");
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_STACK_PROPERTY_ID,"HDP");
properties.put(ClusterStackVersionResourceProvider.CLUSTER_STACK_VERSION_VERSION_PROPERTY_ID,"2.1.1");
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,null);
RequestStatus status=provider.createResources(request);
Assert.assertNotNull(status);
verify(managementController,response,clusters,stageFactory,stage);
Float successFactor=successFactors.get(Role.INSTALL_PACKAGES);
Assert.assertEquals(Float.valueOf(0.85f),successFactor);
}
Class: org.apache.ambari.server.controller.internal.CompatibleRepositoryVersionResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createClusterAdministrator("admin",2L));
final ResourceProvider provider=injector.getInstance(ResourceProviderFactory.class).getRepositoryVersionResourceProvider();
Request getRequest=PropertyHelper.getReadRequest(RepositoryVersionResourceProvider.REPOSITORY_VERSION_ID_PROPERTY_ID,RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID,RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID,CompatibleRepositoryVersionResourceProvider.REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID);
Predicate predicateStackName=new PredicateBuilder().property(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID).equals("HDP").toPredicate();
Predicate predicateStackVersion=new PredicateBuilder().property(RepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID).equals("1.1").toPredicate();
assertEquals(1,provider.getResources(getRequest,new AndPredicate(predicateStackName,predicateStackVersion)).size());
CompatibleRepositoryVersionResourceProvider compatibleProvider=new CompatibleRepositoryVersionResourceProvider(null);
getRequest=PropertyHelper.getReadRequest(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_ID_PROPERTY_ID,CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID,CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID,CompatibleRepositoryVersionResourceProvider.REPOSITORY_UPGRADES_SUPPORTED_TYPES_ID);
predicateStackName=new PredicateBuilder().property(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_NAME_PROPERTY_ID).equals("HDP").toPredicate();
predicateStackVersion=new PredicateBuilder().property(CompatibleRepositoryVersionResourceProvider.REPOSITORY_VERSION_STACK_VERSION_PROPERTY_ID).equals("1.1").toPredicate();
Set resources=compatibleProvider.getResources(getRequest,new AndPredicate(predicateStackName,predicateStackVersion));
assertEquals(2,resources.size());
Map> versionToUpgradeTypesMap=new HashMap>();
versionToUpgradeTypesMap.put("1.1",Arrays.asList("ROLLING"));
versionToUpgradeTypesMap.put("2.2",Arrays.asList("NON_ROLLING","ROLLING"));
assertEquals(versionToUpgradeTypesMap.size(),checkUpgradeTypes(resources,versionToUpgradeTypesMap));
}
Class: org.apache.ambari.server.controller.internal.ComponentResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Ensure that ServiceComponentNotFoundException is handled where there are multiple requests as would be the
* case when an OR predicate is provided in the query.
*/
@Test public void testGetComponents_OR_Predicate_ServiceComponentNotFoundException() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
StackId stackId=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ComponentInfo component3Info=createNiceMock(ComponentInfo.class);
ComponentInfo component4Info=createNiceMock(ComponentInfo.class);
ServiceComponent component1=createNiceMock(ServiceComponent.class);
ServiceComponent component2=createNiceMock(ServiceComponent.class);
ServiceComponentResponse response1=createNiceMock(ServiceComponentResponse.class);
ServiceComponentResponse response2=createNiceMock(ServiceComponentResponse.class);
ServiceComponentRequest request1=new ServiceComponentRequest("cluster1","service1","component1",null);
ServiceComponentRequest request2=new ServiceComponentRequest("cluster1","service1","component2",null);
ServiceComponentRequest request3=new ServiceComponentRequest("cluster1","service1","component3",null);
ServiceComponentRequest request4=new ServiceComponentRequest("cluster1","service1","component4",null);
ServiceComponentRequest request5=new ServiceComponentRequest("cluster1","service2",null,null);
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
setRequests.add(request4);
setRequests.add(request5);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(stackId.getStackName()).andReturn("stackName").anyTimes();
expect(stackId.getStackVersion()).andReturn("1").anyTimes();
expect(clusters.getCluster("cluster1")).andReturn(cluster).anyTimes();
expect(cluster.getDesiredStackVersion()).andReturn(stackId).anyTimes();
expect(cluster.getService("service1")).andReturn(service).anyTimes();
expect(cluster.getService("service2")).andThrow(new ObjectNotFoundException("service2"));
expect(ambariMetaInfo.getComponent("stackName","1","service1","component3")).andReturn(component3Info);
expect(ambariMetaInfo.getComponent("stackName","1","service1","component4")).andReturn(component4Info);
expect(component3Info.getCategory()).andReturn(null);
expect(component4Info.getCategory()).andReturn(null);
expect(service.getName()).andReturn("service1").anyTimes();
expect(service.getServiceComponent("component1")).andThrow(new ServiceComponentNotFoundException("cluster1","service1","component1"));
expect(service.getServiceComponent("component2")).andThrow(new ServiceComponentNotFoundException("cluster1","service1","component2"));
expect(service.getServiceComponent("component3")).andReturn(component1);
expect(service.getServiceComponent("component4")).andReturn(component2);
expect(component1.convertToResponse()).andReturn(response1);
expect(component2.convertToResponse()).andReturn(response2);
replay(clusters,cluster,service,component3Info,component4Info,component1,component2,response1,response2,ambariMetaInfo,stackId,managementController);
Set setResponses=getComponentResourceProvider(managementController).getComponents(setRequests);
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response1));
assertTrue(setResponses.contains(response2));
verify(clusters,cluster,service,component3Info,component4Info,component1,component2,response1,response2,ambariMetaInfo,stackId,managementController);
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
/**
* Ensure that ServiceComponentNotFoundException is propagated in case where there is a single request.
*/
@Test public void testGetComponents_ServiceComponentNotFoundException() throws Exception {
Injector injector=createStrictMock(Injector.class);
Capture controllerCapture=EasyMock.newCapture();
Clusters clusters=createNiceMock(Clusters.class);
MaintenanceStateHelper maintHelper=createNiceMock(MaintenanceStateHelper.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ServiceComponentRequest request1=new ServiceComponentRequest("cluster1","service1","component1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
injector.injectMembers(capture(controllerCapture));
expect(injector.getInstance(Gson.class)).andReturn(null);
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(maintHelper);
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class));
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(cluster.getService("service1")).andReturn(service);
expect(service.getServiceComponent("component1")).andThrow(new ServiceComponentNotFoundException("cluster1","service1","component1"));
replay(maintHelper,injector,clusters,cluster,service);
AmbariManagementController controller=new AmbariManagementControllerImpl(null,clusters,injector);
try {
getComponentResourceProvider(controller).getComponents(setRequests);
fail("expected ServiceComponentNotFoundException");
}
catch ( ServiceComponentNotFoundException e) {
}
assertSame(controller,controllerCapture.getValue());
verify(injector,clusters,cluster,service);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetComponents() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
StackId stackId=createNiceMock(StackId.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
ServiceComponent component=createNiceMock(ServiceComponent.class);
ServiceComponentResponse response=createNiceMock(ServiceComponentResponse.class);
ServiceComponentRequest request1=new ServiceComponentRequest("cluster1","service1","component1",null);
Set setRequests=new HashSet();
setRequests.add(request1);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(stackId.getStackName()).andReturn("stackName").anyTimes();
expect(stackId.getStackVersion()).andReturn("1").anyTimes();
expect(clusters.getCluster("cluster1")).andReturn(cluster);
expect(cluster.getService("service1")).andReturn(service);
expect(cluster.getDesiredStackVersion()).andReturn(stackId).anyTimes();
expect(service.getName()).andReturn("service1").anyTimes();
expect(service.getServiceComponent("component1")).andReturn(component);
expect(ambariMetaInfo.getComponent("stackName","1","service1","component1")).andReturn(componentInfo);
expect(componentInfo.getCategory()).andReturn(null);
expect(component.convertToResponse()).andReturn(response);
replay(clusters,cluster,service,componentInfo,component,response,ambariMetaInfo,stackId,managementController);
Set setResponses=getComponentResourceProvider(managementController).getComponents(setRequests);
assertEquals(1,setResponses.size());
assertTrue(setResponses.contains(response));
verify(clusters,cluster,service,componentInfo,component,response,ambariMetaInfo,stackId,managementController);
}
Class: org.apache.ambari.server.controller.internal.ConfigGroupResourceProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCreateConfigGroup() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Host h1=createNiceMock(Host.class);
Host h2=createNiceMock(Host.class);
HostEntity hostEntity1=createMock(HostEntity.class);
HostEntity hostEntity2=createMock(HostEntity.class);
ConfigGroupFactory configGroupFactory=createNiceMock(ConfigGroupFactory.class);
ConfigGroup configGroup=createNiceMock(ConfigGroup.class);
expect(managementController.getClusters()).andReturn(clusters);
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(clusters.getHost("h1")).andReturn(h1);
expect(clusters.getHost("h2")).andReturn(h2);
expect(managementController.getConfigGroupFactory()).andReturn(configGroupFactory);
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(hostDAO.findByName("h1")).andReturn(hostEntity1).atLeastOnce();
expect(hostDAO.findByName("h2")).andReturn(hostEntity2).atLeastOnce();
expect(hostEntity1.getHostId()).andReturn(1L).atLeastOnce();
expect(hostEntity2.getHostId()).andReturn(2L).atLeastOnce();
Capture clusterCapture=new Capture();
Capture captureName=new Capture();
Capture captureDesc=new Capture();
Capture captureTag=new Capture();
Capture> captureConfigs=new Capture>();
Capture> captureHosts=new Capture>();
expect(configGroupFactory.createNew(capture(clusterCapture),capture(captureName),capture(captureTag),capture(captureDesc),capture(captureConfigs),capture(captureHosts))).andReturn(configGroup);
replay(managementController,clusters,cluster,configGroupFactory,configGroup,response,hostDAO,hostEntity1,hostEntity2);
ResourceProvider provider=getConfigGroupResourceProvider(managementController);
Set> propertySet=new LinkedHashSet>();
Map properties=new LinkedHashMap();
Set> hostSet=new HashSet>();
Map host1=new HashMap();
host1.put(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID,"h1");
hostSet.add(host1);
Map host2=new HashMap();
host2.put(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID,"h2");
hostSet.add(host2);
Set> configSet=new HashSet>();
Map configMap=new HashMap();
Map configs=new HashMap();
configs.put("type","core-site");
configs.put("tag","version100");
configMap.put("key1","value1");
configs.put("properties",configMap);
configSet.add(configs);
properties.put(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID,"Cluster100");
properties.put(ConfigGroupResourceProvider.CONFIGGROUP_NAME_PROPERTY_ID,"test-1");
properties.put(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID,"tag-1");
properties.put(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID,hostSet);
properties.put(ConfigGroupResourceProvider.CONFIGGROUP_CONFIGS_PROPERTY_ID,configSet);
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,null);
provider.createResources(request);
verify(managementController,clusters,cluster,configGroupFactory,configGroup,response,hostDAO,hostEntity1,hostEntity2);
assertEquals("version100",captureConfigs.getValue().get("core-site").getTag());
assertTrue(captureHosts.getValue().containsKey(1L));
assertTrue(captureHosts.getValue().containsKey(2L));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetConfigGroupRequest_populatesConfigAttributes() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ConfigGroupResourceProvider resourceProvider=getConfigGroupResourceProvider(managementController);
Set> desiredConfigProperties=new HashSet>();
Map desiredConfig1=new HashMap();
desiredConfig1.put("tag","version2");
desiredConfig1.put("type","type1");
desiredConfig1.put("properties/key1","value1");
desiredConfig1.put("properties/key2","value2");
desiredConfig1.put("properties_attributes/attr1/key1","true");
desiredConfig1.put("properties_attributes/attr1/key2","false");
desiredConfig1.put("properties_attributes/attr2/key1","15");
desiredConfigProperties.add(desiredConfig1);
Map properties=new HashMap();
properties.put("ConfigGroup/hosts",new HashMap(){
{
put("host_name","ambari1");
}
}
);
properties.put("ConfigGroup/cluster_name","c");
properties.put("ConfigGroup/desired_configs",desiredConfigProperties);
ConfigGroupRequest request=resourceProvider.getConfigGroupRequest(properties);
assertNotNull(request);
Map configMap=request.getConfigs();
assertNotNull(configMap);
assertEquals(1,configMap.size());
assertTrue(configMap.containsKey("type1"));
Config config=configMap.get("type1");
assertEquals("type1",config.getType());
Map configProperties=config.getProperties();
assertNotNull(configProperties);
assertEquals(2,configProperties.size());
assertEquals("value1",configProperties.get("key1"));
assertEquals("value2",configProperties.get("key2"));
Map> configAttributes=config.getPropertiesAttributes();
assertNotNull(configAttributes);
assertEquals(2,configAttributes.size());
assertTrue(configAttributes.containsKey("attr1"));
Map attr1=configAttributes.get("attr1");
assertNotNull(attr1);
assertEquals(2,attr1.size());
assertEquals("true",attr1.get("key1"));
assertEquals("false",attr1.get("key2"));
assertTrue(configAttributes.containsKey("attr2"));
Map attr2=configAttributes.get("attr2");
assertNotNull(attr2);
assertEquals(1,attr2.size());
assertEquals("15",attr2.get("key1"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@SuppressWarnings("unchecked") @Test public void testGetConfigGroup() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Host h1=createNiceMock(Host.class);
final Long host1Id=1L;
List hostIds=new ArrayList(){
{
add(host1Id);
}
}
;
List hostNames=new ArrayList(){
{
add("h1");
}
}
;
HostEntity hostEntity1=createMock(HostEntity.class);
expect(hostDAO.getHostNamesByHostIds(hostIds)).andReturn(hostNames).atLeastOnce();
expect(hostDAO.findByName("h1")).andReturn(hostEntity1).anyTimes();
expect(hostEntity1.getHostId()).andReturn(host1Id).anyTimes();
ConfigGroup configGroup1=createNiceMock(ConfigGroup.class);
ConfigGroup configGroup2=createNiceMock(ConfigGroup.class);
ConfigGroup configGroup3=createNiceMock(ConfigGroup.class);
ConfigGroup configGroup4=createNiceMock(ConfigGroup.class);
ConfigGroupResponse response1=createNiceMock(ConfigGroupResponse.class);
ConfigGroupResponse response2=createNiceMock(ConfigGroupResponse.class);
ConfigGroupResponse response3=createNiceMock(ConfigGroupResponse.class);
ConfigGroupResponse response4=createNiceMock(ConfigGroupResponse.class);
Map configGroupMap=new HashMap();
configGroupMap.put(1L,configGroup1);
configGroupMap.put(2L,configGroup2);
configGroupMap.put(3L,configGroup3);
configGroupMap.put(4L,configGroup4);
Map configGroupByHostname=new HashMap();
configGroupByHostname.put(4L,configGroup4);
expect(configGroup1.convertToResponse()).andReturn(response1).anyTimes();
expect(configGroup2.convertToResponse()).andReturn(response2).anyTimes();
expect(configGroup3.convertToResponse()).andReturn(response3).anyTimes();
expect(configGroup4.convertToResponse()).andReturn(response4).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getConfigGroups()).andReturn(configGroupMap).anyTimes();
expect(cluster.getClusterName()).andReturn("Cluster100").anyTimes();
expect(configGroup1.getName()).andReturn("g1").anyTimes();
expect(configGroup2.getName()).andReturn("g2").anyTimes();
expect(configGroup3.getName()).andReturn("g3").anyTimes();
expect(configGroup4.getName()).andReturn("g4").anyTimes();
expect(configGroup1.getTag()).andReturn("t1").anyTimes();
expect(configGroup2.getTag()).andReturn("t2").anyTimes();
expect(configGroup3.getTag()).andReturn("t3").anyTimes();
expect(configGroup4.getTag()).andReturn("t4").anyTimes();
Map hostMap=new HashMap();
hostMap.put(host1Id,h1);
expect(configGroup4.getHosts()).andReturn(hostMap).anyTimes();
expect(response1.getClusterName()).andReturn("Cluster100").anyTimes();
expect(response2.getClusterName()).andReturn("Cluster100").anyTimes();
expect(response3.getClusterName()).andReturn("Cluster100").anyTimes();
expect(response4.getClusterName()).andReturn("Cluster100").anyTimes();
expect(response1.getId()).andReturn(1L).anyTimes();
expect(response2.getId()).andReturn(2L).anyTimes();
expect(response3.getId()).andReturn(3L).anyTimes();
expect(response4.getId()).andReturn(4L).anyTimes();
expect(response2.getGroupName()).andReturn("g2").anyTimes();
expect(response3.getTag()).andReturn("t3").anyTimes();
expect(cluster.getConfigGroupsByHostname("h1")).andReturn(configGroupByHostname).anyTimes();
Set> hostObj=new HashSet>();
Map hostnames=new HashMap();
hostnames.put("host_name","h1");
hostObj.add(hostnames);
expect(response4.getHosts()).andReturn(hostObj).anyTimes();
replay(managementController,clusters,cluster,hostDAO,hostEntity1,configGroup1,configGroup2,configGroup3,configGroup4,response1,response2,response3,response4);
ResourceProvider resourceProvider=getConfigGroupResourceProvider(managementController);
Set propertyIds=new HashSet();
propertyIds.add(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(ConfigGroupResourceProvider.CONFIGGROUP_ID_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=resourceProvider.getResources(request,predicate);
assertEquals(4,resources.size());
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_ID_PROPERTY_ID).equals(1L).and().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
assertEquals(1L,resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_ID_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_NAME_PROPERTY_ID).equals("g2").toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
assertEquals("g2",resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_NAME_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID).equals("t3").toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
assertEquals("t3",resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID).equals("h1").toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
Set> hostSet=(Set>)resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID);
assertEquals("h1",hostSet.iterator().next().get(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID).equals("h1").toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
hostSet=(Set>)resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID);
assertEquals("h1",hostSet.iterator().next().get(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID).equals("t4").and().property(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID).equals(host1Id).toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
hostSet=(Set>)resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID);
assertEquals("h1",hostSet.iterator().next().get(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_TAG_PROPERTY_ID).equals("t4").and().property(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_HOSTNAME_PROPERTY_ID).equals("h1").toPredicate();
resources=resourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
hostSet=(Set>)resources.iterator().next().getPropertyValue(ConfigGroupResourceProvider.CONFIGGROUP_HOSTS_PROPERTY_ID);
assertEquals("h1",hostSet.iterator().next().get(ConfigGroupResourceProvider.CONFIGGROUP_HOSTNAME_PROPERTY_ID));
predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_ID_PROPERTY_ID).equals(11L).and().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
NoSuchResourceException resourceException=null;
try {
resourceProvider.getResources(request,predicate);
}
catch ( NoSuchResourceException ce) {
resourceException=ce;
}
Assert.assertNotNull(resourceException);
verify(managementController,clusters,cluster,hostDAO,hostEntity1,configGroup1,configGroup2,configGroup3,configGroup4,response1,response2,response3,response4);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteConfigGroup() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
ConfigGroup configGroup=createNiceMock(ConfigGroup.class);
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getConfigGroups()).andReturn(Collections.singletonMap(1L,configGroup));
cluster.deleteConfigGroup(1L);
replay(managementController,clusters,cluster,configGroup);
ResourceProvider resourceProvider=getConfigGroupResourceProvider(managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)resourceProvider).addObserver(observer);
Predicate predicate=new PredicateBuilder().property(ConfigGroupResourceProvider.CONFIGGROUP_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ConfigGroupResourceProvider.CONFIGGROUP_ID_PROPERTY_ID).equals(1L).toPredicate();
resourceProvider.deleteResources(predicate);
ResourceProviderEvent lastEvent=observer.getLastEvent();
Assert.assertNotNull(lastEvent);
Assert.assertEquals(Resource.Type.ConfigGroup,lastEvent.getResourceType());
Assert.assertEquals(ResourceProviderEvent.Type.Delete,lastEvent.getType());
Assert.assertEquals(predicate,lastEvent.getPredicate());
Assert.assertNull(lastEvent.getRequest());
verify(managementController,clusters,cluster,configGroup);
}
Class: org.apache.ambari.server.controller.internal.ConfigurationResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.Configuration;
StackId stackId=new StackId("HDP","0.1");
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new ConfigurationResponse("Cluster100",stackId,"type","tag1",1L,null,null));
allResponse.add(new ConfigurationResponse("Cluster100",stackId,"type","tag2",2L,null,null));
allResponse.add(new ConfigurationResponse("Cluster100",stackId,"type","tag3",3L,null,null));
Set orResponse=new HashSet();
orResponse.add(new ConfigurationResponse("Cluster100",stackId,"type","tag1",1L,null,null));
orResponse.add(new ConfigurationResponse("Cluster100",stackId,"type","tag2",2L,null,null));
Capture> configRequestCapture1=new Capture>();
Capture> configRequestCapture2=new Capture>();
expect(managementController.getConfigurations(capture(configRequestCapture1))).andReturn(allResponse).once();
expect(managementController.getConfigurations(capture(configRequestCapture2))).andReturn(orResponse).once();
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Set setRequest=configRequestCapture1.getValue();
assertEquals(1,setRequest.size());
ConfigurationRequest configRequest=setRequest.iterator().next();
assertEquals("Cluster100",configRequest.getClusterName());
assertNull(configRequest.getType());
assertNull(configRequest.getVersionTag());
Assert.assertEquals(3,resources.size());
boolean containsResource1=false;
boolean containsResource2=false;
boolean containsResource3=false;
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID);
String stackIdProperty=(String)resource.getPropertyValue(ConfigurationResourceProvider.CONFIGURATION_STACK_ID_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
Assert.assertEquals(stackId.getStackId(),stackIdProperty);
String tag=(String)resource.getPropertyValue(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
if (tag.equals("tag1")) {
containsResource1=true;
}
else if (tag.equals("tag2")) {
containsResource2=true;
}
else if (tag.equals("tag3")) {
containsResource3=true;
}
}
assertTrue(containsResource1);
assertTrue(containsResource2);
assertTrue(containsResource3);
predicate=new PredicateBuilder().property(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID).equals("tag1").or().property(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID).equals("tag2").toPredicate();
request=PropertyHelper.getReadRequest(propertyIds);
resources=provider.getResources(request,predicate);
setRequest=configRequestCapture2.getValue();
assertEquals(2,setRequest.size());
boolean containsTag1=false;
boolean containsTag2=false;
for ( ConfigurationRequest cr : setRequest) {
assertNull(cr.getClusterName());
if (cr.getVersionTag().equals("tag1")) {
containsTag1=true;
}
else if (cr.getVersionTag().equals("tag2")) {
containsTag2=true;
}
}
assertTrue(containsTag1);
assertTrue(containsTag2);
Assert.assertEquals(2,resources.size());
containsResource1=false;
containsResource2=false;
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(ConfigurationResourceProvider.CONFIGURATION_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
String tag=(String)resource.getPropertyValue(ConfigurationResourceProvider.CONFIGURATION_CONFIG_TAG_PROPERTY_ID);
if (tag.equals("tag1")) {
containsResource1=true;
}
else if (tag.equals("tag2")) {
containsResource2=true;
}
}
assertTrue(containsResource1);
assertTrue(containsResource2);
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.CredentialResourceProviderTest TestInitializer InternalCallVerifier BooleanVerifier HybridVerifier
@Before public void setUp() throws Exception {
tmpFolder.create();
final File masterKeyFile=tmpFolder.newFile(Configuration.MASTER_KEY_FILENAME_DEFAULT);
Assert.assertTrue(MasterKeyServiceImpl.initializeMasterKeyFile(masterKeyFile,"secret"));
injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.MASTER_KEY_LOCATION,tmpFolder.getRoot().getAbsolutePath());
properties.setProperty(Configuration.MASTER_KEYSTORE_LOCATION,tmpFolder.getRoot().getAbsolutePath());
bind(CredentialStoreService.class).to(CredentialStoreServiceImpl.class);
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(SecurePasswordHelper.class).toInstance(new SecurePasswordHelper());
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
}
Class: org.apache.ambari.server.controller.internal.ExportBlueprintRequestTest APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testExport_noConfigs() throws Exception {
Resource clusterResource=new ResourceImpl(Resource.Type.Cluster);
clusterResource.setProperty(ClusterResourceProvider.CLUSTER_NAME_PROPERTY_ID,CLUSTER_NAME);
clusterResource.setProperty(ClusterResourceProvider.CLUSTER_ID_PROPERTY_ID,CLUSTER_ID);
clusterResource.setProperty(ClusterResourceProvider.CLUSTER_VERSION_PROPERTY_ID,"TEST-1.0");
TreeNode clusterNode=new TreeNodeImpl(null,clusterResource,"cluster");
Resource configResource=new ResourceImpl(Resource.Type.Configuration);
clusterNode.addChild(configResource,"configurations");
Resource hostsResource=new ResourceImpl(Resource.Type.Host);
Resource host1Resource=new ResourceImpl(Resource.Type.Host);
Resource host2Resource=new ResourceImpl(Resource.Type.Host);
Resource host3Resource=new ResourceImpl(Resource.Type.Host);
TreeNode hostsNode=clusterNode.addChild(hostsResource,"hosts");
TreeNode host1Node=hostsNode.addChild(host1Resource,"host_1");
TreeNode host2Node=hostsNode.addChild(host2Resource,"host_2");
TreeNode host3Node=hostsNode.addChild(host3Resource,"host_3");
host1Resource.setProperty("Hosts/host_name","host1");
host2Resource.setProperty("Hosts/host_name","host2");
host3Resource.setProperty("Hosts/host_name","host3");
List host1ComponentsList=Arrays.asList("NAMENODE","HDFS_CLIENT","ZOOKEEPER_SERVER","SECONDARY_NAMENODE");
List host2ComponentsList=Arrays.asList("DATANODE","HDFS_CLIENT","ZOOKEEPER_SERVER");
List host3ComponentsList=Arrays.asList("DATANODE","HDFS_CLIENT","ZOOKEEPER_SERVER");
processHostGroupComponents(host1Node,host1ComponentsList);
processHostGroupComponents(host2Node,host2ComponentsList);
processHostGroupComponents(host3Node,host3ComponentsList);
ExportBlueprintRequest exportBlueprintRequest=new ExportBlueprintRequest(clusterNode);
assertEquals(CLUSTER_NAME,exportBlueprintRequest.getClusterName());
Blueprint bp=exportBlueprintRequest.getBlueprint();
assertEquals("exported-blueprint",bp.getName());
Map hostGroups=bp.getHostGroups();
assertEquals(2,hostGroups.size());
String hg1Name=null;
String hg2Name=null;
for ( HostGroup group : hostGroups.values()) {
Collection components=group.getComponentNames();
if (components.containsAll(host1ComponentsList)) {
assertEquals(host1ComponentsList.size(),components.size());
assertEquals("1",group.getCardinality());
hg1Name=group.getName();
}
else if (components.containsAll(host2ComponentsList)) {
assertEquals(host2ComponentsList.size(),components.size());
assertEquals("2",group.getCardinality());
hg2Name=group.getName();
}
else {
fail("Host group contained invalid components");
}
}
assertNotNull(hg1Name);
assertNotNull(hg2Name);
HostGroupInfo host1Info=exportBlueprintRequest.getHostGroupInfo().get(hg1Name);
assertEquals(1,host1Info.getHostNames().size());
assertEquals("host1",host1Info.getHostNames().iterator().next());
HostGroupInfo host2Info=exportBlueprintRequest.getHostGroupInfo().get(hg2Name);
assertEquals(2,host2Info.getHostNames().size());
assertTrue(host2Info.getHostNames().contains("host2") && host2Info.getHostNames().contains("host3"));
}
Class: org.apache.ambari.server.controller.internal.FeedResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
IvoryService service=createMock(IvoryService.class);
Set> propertySet=new HashSet>();
Map properties=new HashMap();
List feedNames=new LinkedList();
feedNames.add("Feed1");
feedNames.add("Feed2");
feedNames.add("Feed3");
Map props=new HashMap();
Feed feed1=new Feed("Feed1","d","s","sch","source","st","end","l","a","target","st","end","l","a",props);
Feed feed2=new Feed("Feed2","d","s","sch","source","st","end","l","a","target","st","end","l","a",props);
Feed feed3=new Feed("Feed3","d","s","sch","source","st","end","l","a","target","st","end","l","a",props);
expect(service.getFeedNames()).andReturn(feedNames);
expect(service.getFeed("Feed1")).andReturn(feed1);
expect(service.getFeed("Feed2")).andReturn(feed2);
expect(service.getFeed("Feed3")).andReturn(feed3);
replay(service);
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,Collections.emptyMap());
FeedResourceProvider provider=new FeedResourceProvider(service,PropertyHelper.getPropertyIds(Resource.Type.DRFeed),PropertyHelper.getKeyPropertyIds(Resource.Type.DRFeed));
Set resources=provider.getResources(request,null);
Assert.assertEquals(3,resources.size());
verify(service);
}
Class: org.apache.ambari.server.controller.internal.HostComponentProcessResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
@SuppressWarnings("unchecked") ResourceProvider provider=init(new HashMap(){
{
put("status","RUNNING");
put("name","a1");
}
}
);
PredicateBuilder pb=new PredicateBuilder().property(HostComponentProcessResourceProvider.HC_PROCESS_CLUSTER_NAME_ID).equals("c1").and();
pb=pb.property(HostComponentProcessResourceProvider.HC_PROCESS_HOST_NAME_ID).equals("h1").and();
Predicate predicate=pb.property(HostComponentProcessResourceProvider.HC_PROCESS_COMPONENT_NAME_ID).equals("comp1").toPredicate();
Request request=PropertyHelper.getReadRequest(Collections.emptySet());
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(Integer.valueOf(1),Integer.valueOf(resources.size()));
Resource res=resources.iterator().next();
Assert.assertNotNull(res.getPropertyValue(HostComponentProcessResourceProvider.HC_PROCESS_NAME_ID));
Assert.assertNotNull(res.getPropertyValue(HostComponentProcessResourceProvider.HC_PROCESS_STATUS_ID));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources_many() throws Exception {
@SuppressWarnings("unchecked") ResourceProvider provider=init(new HashMap(){
{
put("status","RUNNING");
put("name","a");
}
}
,new HashMap(){
{
put("status","RUNNING");
put("name","b");
}
}
,new HashMap(){
{
put("status","NOT_RUNNING");
put("name","c");
}
}
);
PredicateBuilder pb=new PredicateBuilder().property(HostComponentProcessResourceProvider.HC_PROCESS_CLUSTER_NAME_ID).equals("c1").and();
pb=pb.property(HostComponentProcessResourceProvider.HC_PROCESS_HOST_NAME_ID).equals("h1").and();
Predicate predicate=pb.property(HostComponentProcessResourceProvider.HC_PROCESS_COMPONENT_NAME_ID).equals("comp1").toPredicate();
Request request=PropertyHelper.getReadRequest(Collections.emptySet());
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(Integer.valueOf(3),Integer.valueOf(resources.size()));
for ( Resource r : resources) {
Assert.assertNotNull(r.getPropertyValue(HostComponentProcessResourceProvider.HC_PROCESS_NAME_ID));
Assert.assertNotNull(r.getPropertyValue(HostComponentProcessResourceProvider.HC_PROCESS_STATUS_ID));
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources_none() throws Exception {
@SuppressWarnings("unchecked") ResourceProvider provider=init();
PredicateBuilder pb=new PredicateBuilder().property(HostComponentProcessResourceProvider.HC_PROCESS_CLUSTER_NAME_ID).equals("c1").and();
pb=pb.property(HostComponentProcessResourceProvider.HC_PROCESS_HOST_NAME_ID).equals("h1").and();
Predicate predicate=pb.property(HostComponentProcessResourceProvider.HC_PROCESS_COMPONENT_NAME_ID).equals("comp1").toPredicate();
Request request=PropertyHelper.getReadRequest(Collections.emptySet());
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(Integer.valueOf(0),Integer.valueOf(resources.size()));
}
Class: org.apache.ambari.server.controller.internal.HostComponentResourceProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCheckPropertyIds() throws Exception {
Set propertyIds=new HashSet();
propertyIds.add("foo");
propertyIds.add("cat1/foo");
propertyIds.add("cat2/bar");
propertyIds.add("cat2/baz");
propertyIds.add("cat3/sub1/bam");
propertyIds.add("cat4/sub2/sub3/bat");
propertyIds.add("cat5/subcat5/map");
Map keyPropertyIds=new HashMap();
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Injector injector=createNiceMock(Injector.class);
HostComponentResourceProvider provider=new HostComponentResourceProvider(propertyIds,keyPropertyIds,managementController,injector);
Set unsupported=provider.checkPropertyIds(Collections.singleton("foo"));
Assert.assertTrue(unsupported.isEmpty());
Assert.assertTrue(provider.checkPropertyIds(Collections.singleton("cat5/subcat5/map/key")).isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("bar"));
Assert.assertEquals(1,unsupported.size());
Assert.assertTrue(unsupported.contains("bar"));
unsupported=provider.checkPropertyIds(Collections.singleton("cat1/foo"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("cat1"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("config"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("config/unknown_property"));
Assert.assertTrue(unsupported.isEmpty());
}
Class: org.apache.ambari.server.controller.internal.HostKerberosIdentityResourceProviderTest APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
KerberosPrincipalDescriptor principalDescriptor1=createStrictMock(KerberosPrincipalDescriptor.class);
expect(principalDescriptor1.getValue()).andReturn("principal1@EXAMPLE.COM");
expect(principalDescriptor1.getType()).andReturn(KerberosPrincipalType.USER).times(1);
expect(principalDescriptor1.getLocalUsername()).andReturn("principal1");
KerberosKeytabDescriptor keytabDescriptor1=createStrictMock(KerberosKeytabDescriptor.class);
expect(keytabDescriptor1.getOwnerAccess()).andReturn("rw").times(1);
expect(keytabDescriptor1.getGroupAccess()).andReturn("r").times(1);
expect(keytabDescriptor1.getFile()).andReturn("/etc/security/keytabs/principal1.headless.keytab").times(1);
expect(keytabDescriptor1.getOwnerName()).andReturn("principal1").times(1);
expect(keytabDescriptor1.getGroupName()).andReturn("principal1").times(1);
KerberosIdentityDescriptor identity1=createStrictMock(KerberosIdentityDescriptor.class);
expect(identity1.getPrincipalDescriptor()).andReturn(principalDescriptor1).times(1);
expect(identity1.getKeytabDescriptor()).andReturn(keytabDescriptor1).times(1);
expect(identity1.getName()).andReturn("identity1").times(1);
KerberosPrincipalDescriptor principalDescriptor2=createStrictMock(KerberosPrincipalDescriptor.class);
expect(principalDescriptor2.getValue()).andReturn("principal2/Host100@EXAMPLE.COM");
expect(principalDescriptor2.getType()).andReturn(KerberosPrincipalType.SERVICE).times(1);
expect(principalDescriptor2.getLocalUsername()).andReturn("principal2");
KerberosIdentityDescriptor identity2=createStrictMock(KerberosIdentityDescriptor.class);
expect(identity2.getPrincipalDescriptor()).andReturn(principalDescriptor2).times(1);
expect(identity2.getKeytabDescriptor()).andReturn(null).times(1);
expect(identity2.getName()).andReturn("identity2").times(1);
KerberosIdentityDescriptor identity3=createStrictMock(KerberosIdentityDescriptor.class);
expect(identity3.getPrincipalDescriptor()).andReturn(null).times(1);
KerberosIdentityDescriptor identity4=createStrictMock(KerberosIdentityDescriptor.class);
expect(identity4.getPrincipalDescriptor()).andReturn(null).times(1);
KerberosPrincipalDescriptor principalDescriptor5=createStrictMock(KerberosPrincipalDescriptor.class);
expect(principalDescriptor5.getValue()).andReturn("principal5@EXAMPLE.COM");
expect(principalDescriptor5.getType()).andReturn(KerberosPrincipalType.USER).times(1);
expect(principalDescriptor5.getLocalUsername()).andReturn("principal5");
KerberosKeytabDescriptor keytabDescriptor5=createStrictMock(KerberosKeytabDescriptor.class);
expect(keytabDescriptor5.getOwnerAccess()).andReturn("r").times(1);
expect(keytabDescriptor5.getGroupAccess()).andReturn("r").times(1);
expect(keytabDescriptor5.getFile()).andReturn("/etc/security/keytabs/principal5.headless.keytab").times(1);
expect(keytabDescriptor5.getOwnerName()).andReturn("principal5").times(1);
expect(keytabDescriptor5.getGroupName()).andReturn("hadoop").times(1);
KerberosIdentityDescriptor identity5=createStrictMock(KerberosIdentityDescriptor.class);
expect(identity5.getPrincipalDescriptor()).andReturn(principalDescriptor5).times(1);
expect(identity5.getKeytabDescriptor()).andReturn(keytabDescriptor5).times(1);
expect(identity5.getName()).andReturn("identity5").times(1);
KerberosPrincipalDAO kerberosPrincipalDAO=createStrictMock(KerberosPrincipalDAO.class);
expect(kerberosPrincipalDAO.exists("principal1@EXAMPLE.COM")).andReturn(true).times(1);
expect(kerberosPrincipalDAO.exists("principal2/Host100@EXAMPLE.COM")).andReturn(true).times(1);
expect(kerberosPrincipalDAO.exists("principal5@EXAMPLE.COM")).andReturn(false).times(1);
KerberosPrincipalHostDAO kerberosPrincipalHostDAO=createStrictMock(KerberosPrincipalHostDAO.class);
expect(kerberosPrincipalHostDAO.exists("principal1@EXAMPLE.COM",100L)).andReturn(true).times(1);
expect(kerberosPrincipalHostDAO.exists("principal2/Host100@EXAMPLE.COM",100L)).andReturn(false).times(1);
HostEntity host100=createStrictMock(HostEntity.class);
expect(host100.getHostId()).andReturn(100L).times(1);
HostDAO hostDAO=createStrictMock(HostDAO.class);
expect(hostDAO.findByName("Host100")).andReturn(host100).times(1);
Collection identities=new ArrayList();
identities.add(identity1);
identities.add(identity2);
identities.add(identity3);
identities.add(identity4);
identities.add(identity5);
Map> activeIdentities=new HashMap>();
activeIdentities.put("Host100",identities);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
expect(kerberosHelper.getActiveIdentities("Cluster100","Host100",null,null,true)).andReturn(activeIdentities).times(1);
replayAll();
ResourceProvider provider=new HostKerberosIdentityResourceProvider(managementController);
Field field;
field=HostKerberosIdentityResourceProvider.class.getDeclaredField("kerberosHelper");
field.setAccessible(true);
field.set(provider,kerberosHelper);
field=HostKerberosIdentityResourceProvider.class.getDeclaredField("kerberosPrincipalDAO");
field.setAccessible(true);
field.set(provider,kerberosPrincipalDAO);
field=HostKerberosIdentityResourceProvider.class.getDeclaredField("kerberosPrincipalHostDAO");
field.setAccessible(true);
field.set(provider,kerberosPrincipalHostDAO);
field=HostKerberosIdentityResourceProvider.class.getDeclaredField("hostDAO");
field.setAccessible(true);
field.set(provider,hostDAO);
Set propertyIds=new HashSet();
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_HOST_NAME_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_DESCRIPTION_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_NAME_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_TYPE_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_LOCAL_USERNAME_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_PATH_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_ACCESS_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_ACCESS_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_MODE_PROPERTY_ID);
propertyIds.add(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_INSTALLED_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_HOST_NAME_PROPERTY_ID).equals("Host100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(3,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("Cluster100",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("Host100",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_HOST_NAME_PROPERTY_ID));
String principal=(String)resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_NAME_PROPERTY_ID);
if ("principal1@EXAMPLE.COM".equals(principal)) {
Assert.assertEquals("identity1",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_DESCRIPTION_PROPERTY_ID));
Assert.assertEquals(KerberosPrincipalType.USER,resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_TYPE_PROPERTY_ID));
Assert.assertEquals("principal1",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_LOCAL_USERNAME_PROPERTY_ID));
Assert.assertEquals("/etc/security/keytabs/principal1.headless.keytab",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_PATH_PROPERTY_ID));
Assert.assertEquals("principal1",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_PROPERTY_ID));
Assert.assertEquals("rw",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_ACCESS_PROPERTY_ID));
Assert.assertEquals("principal1",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_PROPERTY_ID));
Assert.assertEquals("r",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_ACCESS_PROPERTY_ID));
Assert.assertEquals("640",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_MODE_PROPERTY_ID));
Assert.assertEquals("true",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_INSTALLED_PROPERTY_ID));
}
else if ("principal2/Host100@EXAMPLE.COM".equals(principal)) {
Assert.assertEquals("identity2",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_DESCRIPTION_PROPERTY_ID));
Assert.assertEquals(KerberosPrincipalType.SERVICE,resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_TYPE_PROPERTY_ID));
Assert.assertEquals("principal2",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_LOCAL_USERNAME_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_PATH_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_ACCESS_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_ACCESS_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_MODE_PROPERTY_ID));
Assert.assertEquals("false",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_INSTALLED_PROPERTY_ID));
}
else if ("principal5@EXAMPLE.COM".equals(principal)) {
Assert.assertEquals("identity5",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_DESCRIPTION_PROPERTY_ID));
Assert.assertEquals(KerberosPrincipalType.USER,resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_TYPE_PROPERTY_ID));
Assert.assertEquals("principal5",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_PRINCIPAL_LOCAL_USERNAME_PROPERTY_ID));
Assert.assertEquals("/etc/security/keytabs/principal5.headless.keytab",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_PATH_PROPERTY_ID));
Assert.assertEquals("principal5",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_PROPERTY_ID));
Assert.assertEquals("r",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_OWNER_ACCESS_PROPERTY_ID));
Assert.assertEquals("hadoop",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_PROPERTY_ID));
Assert.assertEquals("r",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_GROUP_ACCESS_PROPERTY_ID));
Assert.assertEquals("440",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_MODE_PROPERTY_ID));
Assert.assertEquals("unknown",resource.getPropertyValue(HostKerberosIdentityResourceProvider.KERBEROS_IDENTITY_KEYTAB_FILE_INSTALLED_PROPERTY_ID));
}
else {
Assert.fail("Unexpected principal: " + principal);
}
}
verifyAll();
}
Class: org.apache.ambari.server.controller.internal.HostResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_Status_Unhealthy() throws Exception {
Resource.Type type=Resource.Type.Host;
Injector injector=createInjector();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=createMock(Cluster.class);
HostHealthStatus healthStatus=createNiceMock(HostHealthStatus.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
HostResponse hostResponse1=createNiceMock(HostResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider hostResourceProvider=getHostProvider(injector);
Host host100=createMockHost("Host100","Cluster100",null,"UNHEALTHY","RECOVERABLE",null);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Set clusterSet=new HashSet();
clusterSet.add(cluster);
ServiceComponentHostResponse shr1=new ServiceComponentHostResponse("Cluster100","Service100","Component100","Host100","STARTED","",null,null,null);
ServiceComponentHostResponse shr2=new ServiceComponentHostResponse("Cluster100","Service100","Component102","Host100","INSTALLED","",null,null,null);
ServiceComponentHostResponse shr3=new ServiceComponentHostResponse("Cluster100","Service100","Component103","Host100","STARTED","",null,null,null);
Set responses=new HashSet();
responses.add(shr1);
responses.add(shr2);
responses.add(shr3);
expect(host100.getMaintenanceState(2)).andReturn(MaintenanceState.OFF).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(responses).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
expect(clusters.getHosts()).andReturn(Arrays.asList(host100)).anyTimes();
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
expect(hostResponse1.getClusterName()).andReturn("Cluster100").anyTimes();
expect(hostResponse1.getHostname()).andReturn("Host100").anyTimes();
expect(hostResponse1.getHealthStatus()).andReturn(healthStatus).anyTimes();
expect(hostResponse1.getStatus()).andReturn(HealthStatus.UNHEALTHY.name()).anyTimes();
expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.HEALTHY).anyTimes();
expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
expect(ambariMetaInfo.getComponent((String)anyObject(),(String)anyObject(),(String)anyObject(),(String)anyObject())).andReturn(componentInfo).anyTimes();
expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.>anyObject(),EasyMock.>anyObject(),eq(managementController))).andReturn(hostResourceProvider).anyTimes();
Set propertyIds=new HashSet();
propertyIds.add(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
String status=(String)resource.getPropertyValue(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Assert.assertEquals("UNHEALTHY",status);
}
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_Status_Alert() throws Exception {
Resource.Type type=Resource.Type.Host;
Injector injector=createInjector();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=createMock(Cluster.class);
HostHealthStatus healthStatus=createNiceMock(HostHealthStatus.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
HostResponse hostResponse1=createNiceMock(HostResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider hostResourceProvider=getHostProvider(injector);
Host host100=createMockHost("Host100","Cluster100",null,"ALERT","RECOVERABLE",null);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Set clusterSet=new HashSet();
clusterSet.add(cluster);
ServiceComponentHostResponse shr1=new ServiceComponentHostResponse("Cluster100","Service100","Component100","Host100","STARTED","",null,null,null);
ServiceComponentHostResponse shr2=new ServiceComponentHostResponse("Cluster100","Service100","Component102","Host100","INSTALLED","",null,null,null);
ServiceComponentHostResponse shr3=new ServiceComponentHostResponse("Cluster100","Service100","Component103","Host100","STARTED","",null,null,null);
Set responses=new HashSet();
responses.add(shr1);
responses.add(shr2);
responses.add(shr3);
expect(host100.getMaintenanceState(2)).andReturn(MaintenanceState.OFF).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(responses).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
expect(clusters.getHosts()).andReturn(Arrays.asList(host100)).anyTimes();
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
expect(hostResponse1.getClusterName()).andReturn("Cluster100").anyTimes();
expect(hostResponse1.getHostname()).andReturn("Host100").anyTimes();
expect(hostResponse1.getHealthStatus()).andReturn(healthStatus).anyTimes();
expect(hostResponse1.getStatus()).andReturn(HealthStatus.ALERT.name()).anyTimes();
expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.HEALTHY).anyTimes();
expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
expect(ambariMetaInfo.getComponent((String)anyObject(),(String)anyObject(),(String)anyObject(),(String)anyObject())).andReturn(componentInfo).anyTimes();
expect(componentInfo.getCategory()).andReturn("SLAVE").anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.>anyObject(),EasyMock.>anyObject(),eq(managementController))).andReturn(hostResourceProvider).anyTimes();
Set propertyIds=new HashSet();
propertyIds.add(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
String status=(String)resource.getPropertyValue(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Assert.assertEquals("ALERT",status);
}
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_Status_NoCluster() throws Exception {
Resource.Type type=Resource.Type.Host;
Injector injector=createInjector();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=createMock(Cluster.class);
HostHealthStatus healthStatus=createNiceMock(HostHealthStatus.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
Host host100=createMockHost("Host100","Cluster100",null,"HEALTHY","RECOVERABLE",null);
HostResponse hostResponse1=createNiceMock(HostResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider hostResourceProvider=getHostProvider(injector);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Set clusterSet=new HashSet();
clusterSet.add(cluster);
ServiceComponentHostResponse shr1=new ServiceComponentHostResponse("Cluster100","Service100","Component100","Host100","STARTED","",null,null,null);
ServiceComponentHostResponse shr2=new ServiceComponentHostResponse("Cluster100","Service100","Component102","Host100","STARTED","",null,null,null);
ServiceComponentHostResponse shr3=new ServiceComponentHostResponse("Cluster100","Service100","Component103","Host100","STARTED","",null,null,null);
Set responses=new HashSet();
responses.add(shr1);
responses.add(shr2);
responses.add(shr3);
expect(host100.getMaintenanceState(2)).andReturn(MaintenanceState.OFF).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(responses).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
expect(clusters.getHosts()).andReturn(Arrays.asList(host100)).anyTimes();
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
expect(hostResponse1.getClusterName()).andReturn("").anyTimes();
expect(hostResponse1.getHostname()).andReturn("Host100").anyTimes();
expect(hostResponse1.getHealthStatus()).andReturn(healthStatus).anyTimes();
expect(hostResponse1.getStatus()).andReturn(HealthStatus.HEALTHY.name()).anyTimes();
expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.HEALTHY).anyTimes();
expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
expect(ambariMetaInfo.getComponent((String)anyObject(),(String)anyObject(),(String)anyObject(),(String)anyObject())).andReturn(componentInfo).anyTimes();
expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.>anyObject(),EasyMock.>anyObject(),eq(managementController))).andReturn(hostResourceProvider).anyTimes();
Set propertyIds=new HashSet();
propertyIds.add(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
String status=(String)resource.getPropertyValue(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Assert.assertEquals("HEALTHY",status);
}
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_Status_Healthy() throws Exception {
Resource.Type type=Resource.Type.Host;
Injector injector=createInjector();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=createMock(Cluster.class);
HostHealthStatus healthStatus=createNiceMock(HostHealthStatus.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
ComponentInfo componentInfo=createNiceMock(ComponentInfo.class);
Host host100=createMockHost("Host100","Cluster100",null,"HEALTHY","RECOVERABLE",null);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider hostResourceProvider=getHostProvider(injector);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Set clusterSet=new HashSet();
clusterSet.add(cluster);
ServiceComponentHostResponse shr1=new ServiceComponentHostResponse("Cluster100","Service100","Component100","Host100","STARTED","",null,null,null);
ServiceComponentHostResponse shr2=new ServiceComponentHostResponse("Cluster100","Service100","Component102","Host100","STARTED","",null,null,null);
ServiceComponentHostResponse shr3=new ServiceComponentHostResponse("Cluster100","Service100","Component103","Host100","STARTED","",null,null,null);
Set responses=new HashSet();
responses.add(shr1);
responses.add(shr2);
responses.add(shr3);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(responses).anyTimes();
expect(host100.getMaintenanceState(2)).andReturn(MaintenanceState.OFF).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
expect(clusters.getHosts()).andReturn(Arrays.asList(host100)).anyTimes();
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.HEALTHY).anyTimes();
expect(healthStatus.getHealthReport()).andReturn("HEALTHY").anyTimes();
expect(ambariMetaInfo.getComponent((String)anyObject(),(String)anyObject(),(String)anyObject(),(String)anyObject())).andReturn(componentInfo).anyTimes();
expect(componentInfo.getCategory()).andReturn("MASTER").anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.>anyObject(),EasyMock.>anyObject(),eq(managementController))).andReturn(hostResourceProvider).anyTimes();
Set propertyIds=new HashSet();
propertyIds.add(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
String status=(String)resource.getPropertyValue(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Assert.assertEquals("HEALTHY",status);
}
verifyAll();
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Ensure that HostNotFoundException is handled where there are multiple requests as would be the
* case when an OR predicate is provided in the query.
*/
@Test public void testGetHosts___OR_Predicate_HostNotFoundException() throws Exception {
Injector injector=createInjector();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=createMock(Cluster.class);
Host host1=createNiceMock(Host.class);
Host host2=createNiceMock(Host.class);
HostResponse response=createNiceMock(HostResponse.class);
HostResponse response2=createNiceMock(HostResponse.class);
HostRequest request1=new HostRequest("host1","cluster1",Collections.emptyMap());
HostRequest request2=new HostRequest("host2","cluster1",Collections.emptyMap());
HostRequest request3=new HostRequest("host3","cluster1",Collections.emptyMap());
HostRequest request4=new HostRequest("host4","cluster1",Collections.emptyMap());
Set setRequests=new HashSet();
setRequests.add(request1);
setRequests.add(request2);
setRequests.add(request3);
setRequests.add(request4);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("cluster1")).andReturn(cluster).times(4);
expect(clusters.getHost("host1")).andReturn(host1);
expect(host1.getHostName()).andReturn("host1").anyTimes();
expect(clusters.getClustersForHost("host1")).andReturn(Collections.singleton(cluster));
expect(host1.convertToResponse()).andReturn(response);
response.setClusterName("cluster1");
expect(clusters.getHost("host2")).andReturn(host2);
expect(host2.getHostName()).andReturn("host2").anyTimes();
expect(clusters.getClustersForHost("host2")).andReturn(Collections.singleton(cluster));
expect(host2.convertToResponse()).andReturn(response2);
response2.setClusterName("cluster1");
expect(clusters.getHost("host3")).andThrow(new HostNotFoundException("host3"));
expect(clusters.getHost("host4")).andThrow(new HostNotFoundException("host4"));
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
Set setResponses=getHosts(managementController,setRequests);
assertEquals(2,setResponses.size());
assertTrue(setResponses.contains(response));
assertTrue(setResponses.contains(response2));
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_Status_Unknown() throws Exception {
Resource.Type type=Resource.Type.Host;
Injector injector=createInjector();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=createMock(Cluster.class);
HostHealthStatus healthStatus=createNiceMock(HostHealthStatus.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
HostResponse hostResponse1=createNiceMock(HostResponse.class);
ResourceProviderFactory resourceProviderFactory=createNiceMock(ResourceProviderFactory.class);
ResourceProvider hostResourceProvider=getHostProvider(injector);
AbstractControllerResourceProvider.init(resourceProviderFactory);
Host host100=createMockHost("Host100","Cluster100",null,"UNKNOWN","RECOVERABLE",null);
Set clusterSet=new HashSet();
clusterSet.add(cluster);
expect(host100.getMaintenanceState(2)).andReturn(MaintenanceState.OFF).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(clusters.getClustersForHost("Host100")).andReturn(clusterSet).anyTimes();
expect(clusters.getHosts()).andReturn(Arrays.asList(host100)).anyTimes();
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
expect(hostResponse1.getClusterName()).andReturn("Cluster100").anyTimes();
expect(hostResponse1.getHostname()).andReturn("Host100").anyTimes();
expect(hostResponse1.getHealthStatus()).andReturn(healthStatus).anyTimes();
expect(hostResponse1.getStatus()).andReturn(HealthStatus.UNKNOWN.name()).anyTimes();
expect(healthStatus.getHealthStatus()).andReturn(HostHealthStatus.HealthStatus.UNKNOWN).anyTimes();
expect(healthStatus.getHealthReport()).andReturn("UNKNOWN").anyTimes();
expect(resourceProviderFactory.getHostResourceProvider(EasyMock.>anyObject(),EasyMock.>anyObject(),eq(managementController))).andReturn(hostResourceProvider).anyTimes();
Set propertyIds=new HashSet();
propertyIds.add(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_NAME_PROPERTY_ID);
propertyIds.add(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
replayAll();
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(HostResourceProvider.HOST_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
String status=(String)resource.getPropertyValue(HostResourceProvider.HOST_HOST_STATUS_PROPERTY_ID);
Assert.assertEquals("UNKNOWN",status);
}
verifyAll();
}
Class: org.apache.ambari.server.controller.internal.HttpPropertyProviderTest InternalCallVerifier BooleanVerifier
@Test public void testReadResourceManager() throws Exception {
TestStreamProvider streamProvider=new TestStreamProvider(false);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Injector injector=createNiceMock(Injector.class);
Config config1=createNiceMock(Config.class);
Config config2=createNiceMock(Config.class);
Map map=new HashMap();
map.put("yarn.http.policy","HTTPS_ONLY");
map.put("yarn.resourcemanager.webapp.https.address","ec2-54-234-33-50.compute-1.amazonaws.com:8999");
map.put("yarn.resourcemanager.webapp.address","ec2-54-234-33-50.compute-1.amazonaws.com:8088");
expect(injector.getInstance(Clusters.class)).andReturn(clusters);
expect(clusters.getCluster("testCluster")).andReturn(cluster);
expect(cluster.getDesiredConfigByType("yarn-site")).andReturn(config1).anyTimes();
expect(cluster.getDesiredConfigByType("core-site")).andReturn(config2).anyTimes();
expect(config1.getProperties()).andReturn(map).anyTimes();
expect(config2.getProperties()).andReturn(new HashMap()).anyTimes();
replay(injector,clusters,cluster,config1,config2);
HttpProxyPropertyProvider propProvider=new HttpProxyPropertyProvider(streamProvider,configuration,injector,PROPERTY_ID_CLUSTER_NAME,PROPERTY_ID_HOST_NAME,PROPERTY_ID_COMPONENT_NAME);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(PROPERTY_ID_HOST_NAME,"ec2-54-234-33-50.compute-1.amazonaws.com");
resource.setProperty(PROPERTY_ID_CLUSTER_NAME,"testCluster");
resource.setProperty(PROPERTY_ID_COMPONENT_NAME,"RESOURCEMANAGER");
Request request=PropertyHelper.getReadRequest(Collections.emptySet());
propProvider.populateResources(Collections.singleton(resource),request,null);
Assert.assertTrue(resource.getPropertiesMap().get("HostRoles").get("ha_state").equals("ACTIVE"));
Assert.assertTrue(streamProvider.getLastSpec().equals("https://ec2-54-234-33-50.compute-1.amazonaws.com:8999" + "/ws/v1/cluster/info"));
}
InternalCallVerifier BooleanVerifier
@Test public void testReadResourceManagerHA() throws Exception {
TestStreamProvider streamProvider=new TestStreamProvider(false);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Injector injector=createNiceMock(Injector.class);
Config config1=createNiceMock(Config.class);
Config config2=createNiceMock(Config.class);
Map map=new HashMap();
map.put("yarn.http.policy","HTTPS_ONLY");
map.put("yarn.resourcemanager.ha.rm-ids","rm1,rm2");
map.put("yarn.resourcemanager.hostname.rm1","lc6402.ambari.apache.org");
map.put("yarn.resourcemanager.hostname.rm2","lc6403.ambari.apache.org");
map.put("yarn.resourcemanager.webapp.address.rm1","lc6402.ambari.apache.org:8099");
map.put("yarn.resourcemanager.webapp.address.rm2","lc6403.ambari.apache.org:8099");
map.put("yarn.resourcemanager.webapp.https.address.rm1","lc6402.ambari.apache.org:8066");
map.put("yarn.resourcemanager.webapp.https.address.rm2","lc6403.ambari.apache.org:8066");
expect(injector.getInstance(Clusters.class)).andReturn(clusters);
expect(clusters.getCluster("testCluster")).andReturn(cluster);
expect(cluster.getDesiredConfigByType("yarn-site")).andReturn(config1).anyTimes();
expect(cluster.getDesiredConfigByType("core-site")).andReturn(config2).anyTimes();
expect(config1.getProperties()).andReturn(map).anyTimes();
expect(config2.getProperties()).andReturn(new HashMap()).anyTimes();
replay(injector,clusters,cluster,config1,config2);
HttpProxyPropertyProvider propProvider=new HttpProxyPropertyProvider(streamProvider,configuration,injector,PROPERTY_ID_CLUSTER_NAME,PROPERTY_ID_HOST_NAME,PROPERTY_ID_COMPONENT_NAME);
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
resource.setProperty(PROPERTY_ID_HOST_NAME,"lc6402.ambari.apache.org");
resource.setProperty(PROPERTY_ID_CLUSTER_NAME,"testCluster");
resource.setProperty(PROPERTY_ID_COMPONENT_NAME,"RESOURCEMANAGER");
Request request=PropertyHelper.getReadRequest(Collections.emptySet());
propProvider.populateResources(Collections.singleton(resource),request,null);
Assert.assertTrue(resource.getPropertiesMap().get("HostRoles").get("ha_state").equals("ACTIVE"));
Assert.assertTrue(streamProvider.getLastSpec().equals("https://lc6402.ambari.apache.org:8066" + "/ws/v1/cluster/info"));
}
Class: org.apache.ambari.server.controller.internal.InstanceResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
IvoryService service=createMock(IvoryService.class);
Set> propertySet=new HashSet>();
Map properties=new HashMap();
List instances=new LinkedList();
Instance instance1=new Instance("Feed1","Instance1","s","st","et","d","l");
Instance instance2=new Instance("Feed1","Instance2","s","st","et","d","l");
Instance instance3=new Instance("Feed1","Instance3","s","st","et","d","l");
instances.add(instance1);
instances.add(instance2);
instances.add(instance3);
expect(service.getFeedNames()).andReturn(Collections.singletonList("Feed1"));
expect(service.getInstances("Feed1")).andReturn(instances);
replay(service);
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,Collections.emptyMap());
InstanceResourceProvider provider=new InstanceResourceProvider(service,PropertyHelper.getPropertyIds(Resource.Type.DRInstance),PropertyHelper.getKeyPropertyIds(Resource.Type.DRInstance));
Set resources=provider.getResources(request,null);
Assert.assertEquals(3,resources.size());
verify(service);
}
Class: org.apache.ambari.server.controller.internal.JMXHostProviderTest InternalCallVerifier EqualityVerifier
@Test public void testJMXPortMapInitAtClusterLevel() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createConfigs();
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Cluster);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("70070",providerModule.getPort("c1","NAMENODE","localhost"));
Assert.assertEquals("70075",providerModule.getPort("c1","DATANODE","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","JOBTRACKER","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","TASKTRACKER","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","HBASE_MASTER","localhost"));
}
InternalCallVerifier EqualityVerifier
@Test public void testJMXPortMapUpdate() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createConfigs();
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Cluster);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("8088",providerModule.getPort("c1","RESOURCEMANAGER","localhost"));
Map yarnConfigs=new HashMap();
yarnConfigs.put(RESOURCEMANAGER_PORT,"localhost:50030");
yarnConfigs.put(NODEMANAGER_PORT,"localhost:11111");
ConfigurationRequest cr2=new ConfigurationRequest("c1","yarn-site","versionN+1",yarnConfigs,null);
ClusterRequest crReq=new ClusterRequest(1L,"c1",null,null);
crReq.setDesiredConfig(Collections.singletonList(cr2));
controller.updateClusters(Collections.singleton(crReq),null);
Assert.assertEquals("50030",providerModule.getPort("c1","RESOURCEMANAGER","localhost"));
Assert.assertEquals("11111",providerModule.getPort("c1","NODEMANAGER","localhost"));
Assert.assertEquals("70070",providerModule.getPort("c1","NAMENODE","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","JOBTRACKER","localhost"));
}
InternalCallVerifier BooleanVerifier
@Test public void testGetHostNames() throws AmbariException {
JMXHostProviderModule providerModule=new JMXHostProviderModule();
AmbariManagementController managementControllerMock=createNiceMock(AmbariManagementController.class);
Clusters clustersMock=createNiceMock(Clusters.class);
Cluster clusterMock=createNiceMock(Cluster.class);
Service serviceMock=createNiceMock(Service.class);
ServiceComponent serviceComponentMock=createNiceMock(ServiceComponent.class);
Map hostComponents=new HashMap();
hostComponents.put("host1",null);
expect(managementControllerMock.getClusters()).andReturn(clustersMock).anyTimes();
expect(managementControllerMock.findServiceName(clusterMock,"DATANODE")).andReturn("HDFS");
expect(clustersMock.getCluster("c1")).andReturn(clusterMock).anyTimes();
expect(clusterMock.getService("HDFS")).andReturn(serviceMock).anyTimes();
expect(serviceMock.getServiceComponent("DATANODE")).andReturn(serviceComponentMock).anyTimes();
expect(serviceComponentMock.getServiceComponentHosts()).andReturn(hostComponents).anyTimes();
replay(managementControllerMock,clustersMock,clusterMock,serviceMock,serviceComponentMock);
providerModule.managementController=managementControllerMock;
Set result=providerModule.getHostNames("c1","DATANODE");
Assert.assertTrue(result.iterator().next().equals("host1"));
}
InternalCallVerifier EqualityVerifier
@Test public void testJMXJournalNodeHttpsPort() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createConfigs();
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Cluster);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("https",providerModule.getJMXProtocol("c1","JOURNALNODE"));
Assert.assertEquals("8481",providerModule.getPort("c1","JOURNALNODE","localhost",true));
}
InternalCallVerifier EqualityVerifier
@Test public void testJMXHttpsPort() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createConfigs();
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Cluster);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("https",providerModule.getJMXProtocol("c1","RESOURCEMANAGER"));
Assert.assertEquals("8090",providerModule.getPort("c1","RESOURCEMANAGER","localhost",true));
}
InternalCallVerifier EqualityVerifier
@Test public void testJMXPortMapNameNodeHa() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createConfigsNameNodeHa();
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Service);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("50071",providerModule.getPort("nnha","NAMENODE","h1"));
Assert.assertEquals("50072",providerModule.getPort("nnha","NAMENODE","h2"));
}
InternalCallVerifier EqualityVerifier
@Test public void testJMXPortMapInitAtServiceLevelVersion1() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createHDFSServiceConfigs(true);
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Service);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("70070",providerModule.getPort("c1","NAMENODE","localhost"));
Assert.assertEquals("70075",providerModule.getPort("c1","DATANODE","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","JOBTRACKER","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","TASKTRACKER","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","HBASE_MASTER","localhost"));
}
InternalCallVerifier EqualityVerifier
@Test public void testJMXPortMapInitAtServiceLevelVersion2() throws NoSuchParentResourceException, ResourceAlreadyExistsException, UnsupportedPropertyException, SystemException, AmbariException, NoSuchResourceException {
createHDFSServiceConfigs(false);
JMXHostProviderModule providerModule=new JMXHostProviderModule();
providerModule.registerResourceProvider(Resource.Type.Service);
providerModule.registerResourceProvider(Resource.Type.Configuration);
Assert.assertEquals("70071",providerModule.getPort("c1","NAMENODE","localhost"));
Assert.assertEquals("70075",providerModule.getPort("c1","DATANODE","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","JOBTRACKER","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","TASKTRACKER","localhost"));
Assert.assertEquals(null,providerModule.getPort("c1","HBASE_MASTER","localhost"));
}
Class: org.apache.ambari.server.controller.internal.JobResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testJobFetcher4() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set requestedIds=new HashSet();
requestedIds.add(JobResourceProvider.JOB_ID_PROPERTY_ID);
requestedIds.add(JobResourceProvider.JOB_SUBMIT_TIME_PROPERTY_ID);
requestedIds.add(JobResourceProvider.JOB_ELAPSED_TIME_PROPERTY_ID);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(Resource.Type.Job);
ResourceProvider provider=new TestJobResourceProvider(requestedIds,keyPropertyIds,4);
Request request=PropertyHelper.getReadRequest(requestedIds);
Predicate predicate=new PredicateBuilder().property(JobResourceProvider.JOB_ID_PROPERTY_ID).equals("job1").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String workflowId=(String)resource.getPropertyValue(JobResourceProvider.JOB_ID_PROPERTY_ID);
Assert.assertEquals("job1",workflowId);
Assert.assertEquals(42l,resource.getPropertyValue(JobResourceProvider.JOB_SUBMIT_TIME_PROPERTY_ID));
Assert.assertEquals(0l,resource.getPropertyValue(JobResourceProvider.JOB_ELAPSED_TIME_PROPERTY_ID));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testJobFetcher1() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set requestedIds=new HashSet();
requestedIds.add(JobResourceProvider.JOB_ID_PROPERTY_ID);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(Resource.Type.Job);
ResourceProvider provider=new TestJobResourceProvider(requestedIds,keyPropertyIds,1);
Request request=PropertyHelper.getReadRequest(requestedIds);
Predicate predicate=new PredicateBuilder().property(JobResourceProvider.JOB_ID_PROPERTY_ID).equals("job1").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String workflowId=(String)resource.getPropertyValue(JobResourceProvider.JOB_ID_PROPERTY_ID);
Assert.assertEquals("job1",workflowId);
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testJobFetcher3() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set requestedIds=new HashSet();
requestedIds.add(JobResourceProvider.JOB_ID_PROPERTY_ID);
requestedIds.add(JobResourceProvider.JOB_ELAPSED_TIME_PROPERTY_ID);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(Resource.Type.Job);
ResourceProvider provider=new TestJobResourceProvider(requestedIds,keyPropertyIds,3);
Request request=PropertyHelper.getReadRequest(requestedIds);
Predicate predicate=new PredicateBuilder().property(JobResourceProvider.JOB_ID_PROPERTY_ID).equals("job1").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String workflowId=(String)resource.getPropertyValue(JobResourceProvider.JOB_ID_PROPERTY_ID);
Assert.assertEquals("job1",workflowId);
Assert.assertEquals(1l,resource.getPropertyValue(JobResourceProvider.JOB_ELAPSED_TIME_PROPERTY_ID));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testJobFetcher2() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set requestedIds=new HashSet();
requestedIds.add(JobResourceProvider.JOB_ID_PROPERTY_ID);
requestedIds.add(JobResourceProvider.JOB_SUBMIT_TIME_PROPERTY_ID);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(Resource.Type.Job);
ResourceProvider provider=new TestJobResourceProvider(requestedIds,keyPropertyIds,2);
Request request=PropertyHelper.getReadRequest(requestedIds);
Predicate predicate=new PredicateBuilder().property(JobResourceProvider.JOB_ID_PROPERTY_ID).equals("job1").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String workflowId=(String)resource.getPropertyValue(JobResourceProvider.JOB_ID_PROPERTY_ID);
Assert.assertEquals("job1",workflowId);
Assert.assertEquals(42l,resource.getPropertyValue(JobResourceProvider.JOB_SUBMIT_TIME_PROPERTY_ID));
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set expected=new HashSet();
expected.add(createJobResponse("Cluster100","workflow1","job1"));
expected.add(createJobResponse("Cluster100","workflow2","job2"));
expected.add(createJobResponse("Cluster100","workflow2","job3"));
Resource.Type type=Resource.Type.Job;
Set propertyIds=PropertyHelper.getPropertyIds(type);
JobFetcher jobFetcher=createMock(JobFetcher.class);
expect(jobFetcher.fetchJobDetails(propertyIds,null,"workflow2",null)).andReturn(expected).once();
replay(jobFetcher);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(type);
ResourceProvider provider=new JobResourceProvider(propertyIds,keyPropertyIds,jobFetcher);
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property(JobResourceProvider.JOB_WORKFLOW_ID_PROPERTY_ID).equals("workflow2").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(3,resources.size());
Set names=new HashSet();
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(JobResourceProvider.JOB_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
names.add((String)resource.getPropertyValue(JobResourceProvider.JOB_ID_PROPERTY_ID));
}
for ( Resource resource : expected) {
Assert.assertTrue(names.contains(resource.getPropertyValue(JobResourceProvider.JOB_ID_PROPERTY_ID)));
}
verify(jobFetcher);
}
Class: org.apache.ambari.server.controller.internal.KerberosDescriptorResourceProviderTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testShoudCreateResourceWhenNameAndDescriptorProvided() throws Exception {
kerberosDescriptorResourceProvider=new KerberosDescriptorResourceProvider(kerberosDescriptorDAO,kerberosDescriptorFactory,Collections.EMPTY_SET,Collections.EMPTY_MAP,null);
EasyMock.expect(request.getProperties()).andReturn(requestPropertySet(KERBEROS_DESCRIPTORS_KERBEROS_DESCRIPTOR_NAME,TEST_KERBEROS_DESCRIPTOR_NAME)).times(3);
EasyMock.expect(request.getRequestInfoProperties()).andReturn(requestInfoPropertyMap(Request.REQUEST_INFO_BODY_PROPERTY,TEST_KERBEROS_DESCRIPTOR)).times(3);
EasyMock.expect(kerberosDescriptorFactory.createKerberosDescriptor(anyString(),anyString())).andReturn(new KerberosDescriptorImpl(TEST_KERBEROS_DESCRIPTOR_NAME,TEST_KERBEROS_DESCRIPTOR));
Capture entityCapture=EasyMock.newCapture();
kerberosDescriptorDAO.create(capture(entityCapture));
EasyMock.replay(request,kerberosDescriptorFactory,kerberosDescriptorDAO);
kerberosDescriptorResourceProvider.createResources(request);
Assert.assertNotNull(entityCapture.getValue());
Assert.assertEquals("The resource name is invalid!",TEST_KERBEROS_DESCRIPTOR_NAME,entityCapture.getValue().getName());
}
Class: org.apache.ambari.server.controller.internal.LdapSyncEventResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
LdapSyncEventResourceProvider provider=new TestLdapSyncEventResourceProvider(amc);
Set> properties=new HashSet>();
Map propertyMap=new HashMap();
Set> specs=new HashSet>();
propertyMap.put(LdapSyncEventResourceProvider.EVENT_SPECS_PROPERTY_ID,specs);
properties.add(propertyMap);
provider.createResources(PropertyHelper.getCreateRequest(properties,null));
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
LdapSyncEventResourceProvider provider=new TestLdapSyncEventResourceProvider(amc);
Set> properties=new HashSet>();
Map propertyMap=new HashMap();
Set> specs=new HashSet>();
propertyMap.put(LdapSyncEventResourceProvider.EVENT_SPECS_PROPERTY_ID,specs);
properties.add(propertyMap);
provider.createResources(PropertyHelper.getCreateRequest(properties,null));
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testDeleteResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
LdapSyncEventResourceProvider provider=new TestLdapSyncEventResourceProvider(amc);
Set> properties=new HashSet>();
Map propertyMap=new HashMap();
Set> specs=new HashSet>();
propertyMap.put(LdapSyncEventResourceProvider.EVENT_SPECS_PROPERTY_ID,specs);
properties.add(propertyMap);
provider.createResources(PropertyHelper.getCreateRequest(properties,null));
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
provider.deleteResources(null);
resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(0,resources.size());
}
Class: org.apache.ambari.server.controller.internal.PageRequestImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetPredicate() throws Exception {
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property("id").equals(20).toPredicate();
PageRequest pageRequest=new PageRequestImpl(PageRequest.StartingPoint.Beginning,20,99,predicate,null);
Assert.assertEquals(predicate,pageRequest.getPredicate());
}
Class: org.apache.ambari.server.controller.internal.PermissionResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
List permissionEntities=new LinkedList();
PermissionEntity permissionEntity=createNiceMock(PermissionEntity.class);
ResourceTypeEntity resourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
permissionEntities.add(permissionEntity);
expect(dao.findAll()).andReturn(permissionEntities);
expect(permissionEntity.getId()).andReturn(99);
expect(permissionEntity.getPermissionName()).andReturn("AMBARI.ADMINISTRATOR");
expect(permissionEntity.getPermissionLabel()).andReturn("Administrator");
expect(permissionEntity.getResourceType()).andReturn(resourceTypeEntity);
expect(resourceTypeEntity.getName()).andReturn("AMBARI");
replay(dao,permissionEntity,resourceTypeEntity);
PermissionResourceProvider provider=new PermissionResourceProvider();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals(99,resource.getPropertyValue(PermissionResourceProvider.PERMISSION_ID_PROPERTY_ID));
Assert.assertEquals("AMBARI.ADMINISTRATOR",resource.getPropertyValue(PermissionResourceProvider.PERMISSION_NAME_PROPERTY_ID));
Assert.assertEquals("Administrator",resource.getPropertyValue(PermissionResourceProvider.PERMISSION_LABEL_PROPERTY_ID));
Assert.assertEquals("AMBARI",resource.getPropertyValue(PermissionResourceProvider.RESOURCE_NAME_PROPERTY_ID));
verify(dao,permissionEntity,resourceTypeEntity);
}
Class: org.apache.ambari.server.controller.internal.PropertyPredicateVisitorTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testVisit(){
PropertyPredicateVisitor visitor=new PropertyPredicateVisitor();
PredicateHelper.visit(PREDICATE_1,visitor);
Map properties=visitor.getProperties();
Assert.assertEquals(1,properties.size());
Assert.assertEquals("Monkey",properties.get(PROPERTY_A));
visitor=new PropertyPredicateVisitor();
PredicateHelper.visit(PREDICATE_3,visitor);
properties=visitor.getProperties();
Assert.assertEquals(2,properties.size());
Assert.assertEquals("Monkey",properties.get(PROPERTY_A));
Assert.assertEquals("Runner",properties.get(PROPERTY_B));
visitor=new PropertyPredicateVisitor();
PredicateHelper.visit(PREDICATE_4,visitor);
properties=visitor.getProperties();
Assert.assertEquals(2,properties.size());
Assert.assertEquals("Monkey",properties.get(PROPERTY_A));
Assert.assertEquals("Runner",properties.get(PROPERTY_B));
visitor=new PropertyPredicateVisitor();
PredicateHelper.visit(PREDICATE_5,visitor);
properties=visitor.getProperties();
Assert.assertTrue(properties.isEmpty());
}
Class: org.apache.ambari.server.controller.internal.ProvisionClusterRequestTest APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMultipleGroups() throws Exception {
Map properties=createBlueprintRequestProperties(CLUSTER_NAME,BLUEPRINT_NAME);
ProvisionClusterRequest provisionClusterRequest=new ProvisionClusterRequest(properties,null);
assertEquals(CLUSTER_NAME,provisionClusterRequest.getClusterName());
assertEquals(TopologyRequest.Type.PROVISION,provisionClusterRequest.getType());
assertEquals(String.format("Provision Cluster '%s'",CLUSTER_NAME),provisionClusterRequest.getDescription());
assertSame(blueprint,provisionClusterRequest.getBlueprint());
Map hostGroupInfo=provisionClusterRequest.getHostGroupInfo();
assertEquals(2,hostGroupInfo.size());
assertEquals(1,provisionClusterRequest.getTopologyValidators().size());
HostGroupInfo group1Info=hostGroupInfo.get("group1");
assertEquals("group1",group1Info.getHostGroupName());
assertEquals(1,group1Info.getHostNames().size());
assertTrue(group1Info.getHostNames().contains("host1.myDomain.com"));
assertEquals(1,group1Info.getRequestedHostCount());
assertNull(group1Info.getPredicate());
Configuration group1Configuration=group1Info.getConfiguration();
assertNull(group1Configuration.getParentConfiguration());
assertEquals(1,group1Configuration.getProperties().size());
Map group1TypeProperties=group1Configuration.getProperties().get("foo-type");
assertEquals(2,group1TypeProperties.size());
assertEquals("prop1Value",group1TypeProperties.get("hostGroup1Prop1"));
assertEquals("prop2Value",group1TypeProperties.get("hostGroup1Prop2"));
assertTrue(group1Configuration.getAttributes().isEmpty());
HostGroupInfo group2Info=hostGroupInfo.get("group2");
assertEquals("group2",group2Info.getHostGroupName());
assertTrue(group2Info.getHostNames().isEmpty());
assertEquals(5,group2Info.getRequestedHostCount());
assertNotNull(group2Info.getPredicate());
Configuration group2Configuration=group2Info.getConfiguration();
assertNull(group2Configuration.getParentConfiguration());
assertEquals(1,group2Configuration.getProperties().size());
Map group2TypeProperties=group2Configuration.getProperties().get("foo-type");
assertEquals(1,group2TypeProperties.size());
assertEquals("prop1Value",group2TypeProperties.get("hostGroup2Prop1"));
Map>> group2Attributes=group2Configuration.getAttributes();
assertEquals(1,group2Attributes.size());
Map> group2Type1Attributes=group2Attributes.get("foo-type");
assertEquals(1,group2Type1Attributes.size());
Map group2Type1Prop1Attributes=group2Type1Attributes.get("hostGroup2Prop10");
assertEquals(1,group2Type1Prop1Attributes.size());
assertEquals("attribute1Prop10-value",group2Type1Prop1Attributes.get("attribute1"));
Configuration clusterScopeConfiguration=provisionClusterRequest.getConfiguration();
assertSame(blueprintConfig,clusterScopeConfiguration.getParentConfiguration());
assertEquals(1,clusterScopeConfiguration.getProperties().size());
Map clusterScopedProperties=clusterScopeConfiguration.getProperties().get("someType");
assertEquals(1,clusterScopedProperties.size());
assertEquals("someValue",clusterScopedProperties.get("property1"));
Map>> clusterScopedAttributes=clusterScopeConfiguration.getAttributes();
assertEquals(1,clusterScopedAttributes.size());
Map> clusterScopedTypeAttributes=clusterScopedAttributes.get("someType");
assertEquals(1,clusterScopedTypeAttributes.size());
Map clusterScopedTypePropertyAttributes=clusterScopedTypeAttributes.get("property1");
assertEquals(1,clusterScopedTypePropertyAttributes.size());
assertEquals("someAttributePropValue",clusterScopedTypePropertyAttributes.get("attribute1"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void test_Creditentials() throws Exception {
Map properties=createBlueprintRequestProperties(CLUSTER_NAME,BLUEPRINT_NAME);
HashMap credentialHashMap=new HashMap<>();
credentialHashMap.put("alias","testAlias");
credentialHashMap.put("principal","testPrincipal");
credentialHashMap.put("key","testKey");
credentialHashMap.put("type","temporary");
Set> credentialsSet=new HashSet<>();
credentialsSet.add(credentialHashMap);
properties.put("credentials",credentialsSet);
ProvisionClusterRequest provisionClusterRequest=new ProvisionClusterRequest(properties,null);
assertEquals(provisionClusterRequest.getCredentialsMap().get("testAlias").getAlias(),"testAlias");
assertEquals(provisionClusterRequest.getCredentialsMap().get("testAlias").getPrincipal(),"testPrincipal");
assertEquals(provisionClusterRequest.getCredentialsMap().get("testAlias").getKey(),"testKey");
assertEquals(provisionClusterRequest.getCredentialsMap().get("testAlias").getType().name(),"TEMPORARY");
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostCountSpecified() throws Exception {
reset(hostResourceProvider);
replay(hostResourceProvider);
Map properties=createBlueprintRequestPropertiesCountOnly(CLUSTER_NAME,BLUEPRINT_NAME);
ProvisionClusterRequest provisionClusterRequest=new ProvisionClusterRequest(properties,null);
assertEquals(CLUSTER_NAME,provisionClusterRequest.getClusterName());
assertEquals(TopologyRequest.Type.PROVISION,provisionClusterRequest.getType());
assertEquals(String.format("Provision Cluster '%s'",CLUSTER_NAME),provisionClusterRequest.getDescription());
assertSame(blueprint,provisionClusterRequest.getBlueprint());
Map hostGroupInfo=provisionClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(1,provisionClusterRequest.getTopologyValidators().size());
HostGroupInfo group2Info=hostGroupInfo.get("group2");
assertEquals("group2",group2Info.getHostGroupName());
assertTrue(group2Info.getHostNames().isEmpty());
assertEquals(5,group2Info.getRequestedHostCount());
assertNull(group2Info.getPredicate());
Configuration group2Configuration=group2Info.getConfiguration();
assertNull(group2Configuration.getParentConfiguration());
assertEquals(1,group2Configuration.getProperties().size());
Map group2TypeProperties=group2Configuration.getProperties().get("foo-type");
assertEquals(1,group2TypeProperties.size());
assertEquals("prop1Value",group2TypeProperties.get("hostGroup2Prop1"));
Map>> group2Attributes=group2Configuration.getAttributes();
assertEquals(1,group2Attributes.size());
Map> group2Type1Attributes=group2Attributes.get("foo-type");
assertEquals(1,group2Type1Attributes.size());
Map group2Type1Prop1Attributes=group2Type1Attributes.get("hostGroup2Prop10");
assertEquals(1,group2Type1Prop1Attributes.size());
assertEquals("attribute1Prop10-value",group2Type1Prop1Attributes.get("attribute1"));
Configuration clusterScopeConfiguration=provisionClusterRequest.getConfiguration();
assertSame(blueprintConfig,clusterScopeConfiguration.getParentConfiguration());
assertEquals(1,clusterScopeConfiguration.getProperties().size());
Map clusterScopedProperties=clusterScopeConfiguration.getProperties().get("someType");
assertEquals(1,clusterScopedProperties.size());
assertEquals("someValue",clusterScopedProperties.get("property1"));
Map>> clusterScopedAttributes=clusterScopeConfiguration.getAttributes();
assertEquals(1,clusterScopedAttributes.size());
Map> clusterScopedTypeAttributes=clusterScopedAttributes.get("someType");
assertEquals(1,clusterScopedTypeAttributes.size());
Map clusterScopedTypePropertyAttributes=clusterScopedTypeAttributes.get("property1");
assertEquals(1,clusterScopedTypePropertyAttributes.size());
assertEquals("someAttributePropValue",clusterScopedTypePropertyAttributes.get("attribute1"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetValidators_defaultPassword() throws Exception {
Map properties=createBlueprintRequestProperties(CLUSTER_NAME,BLUEPRINT_NAME);
properties.put("default_password","pwd");
TopologyRequest request=new ProvisionClusterRequest(properties,null);
List validators=request.getTopologyValidators();
assertEquals(1,validators.size());
TopologyValidator pwdValidator=validators.get(0);
TopologyValidator defaultPwdValidator=new RequiredPasswordValidator("pwd");
assertEquals(pwdValidator,defaultPwdValidator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostNameSpecified() throws Exception {
reset(hostResourceProvider);
replay(hostResourceProvider);
Map properties=createBlueprintRequestPropertiesNameOnly(CLUSTER_NAME,BLUEPRINT_NAME);
ProvisionClusterRequest provisionClusterRequest=new ProvisionClusterRequest(properties,null);
assertEquals(CLUSTER_NAME,provisionClusterRequest.getClusterName());
assertEquals(TopologyRequest.Type.PROVISION,provisionClusterRequest.getType());
assertEquals(String.format("Provision Cluster '%s'",CLUSTER_NAME),provisionClusterRequest.getDescription());
assertSame(blueprint,provisionClusterRequest.getBlueprint());
Map hostGroupInfo=provisionClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(1,provisionClusterRequest.getTopologyValidators().size());
HostGroupInfo group1Info=hostGroupInfo.get("group1");
assertEquals("group1",group1Info.getHostGroupName());
assertEquals(1,group1Info.getHostNames().size());
assertTrue(group1Info.getHostNames().contains("host1.myDomain.com"));
assertEquals(1,group1Info.getRequestedHostCount());
assertNull(group1Info.getPredicate());
Configuration group1Configuration=group1Info.getConfiguration();
assertNull(group1Configuration.getParentConfiguration());
assertEquals(1,group1Configuration.getProperties().size());
Map group1TypeProperties=group1Configuration.getProperties().get("foo-type");
assertEquals(2,group1TypeProperties.size());
assertEquals("prop1Value",group1TypeProperties.get("hostGroup1Prop1"));
assertEquals("prop2Value",group1TypeProperties.get("hostGroup1Prop2"));
assertTrue(group1Configuration.getAttributes().isEmpty());
Configuration clusterScopeConfiguration=provisionClusterRequest.getConfiguration();
assertSame(blueprintConfig,clusterScopeConfiguration.getParentConfiguration());
assertEquals(1,clusterScopeConfiguration.getProperties().size());
Map clusterScopedProperties=clusterScopeConfiguration.getProperties().get("someType");
assertEquals(1,clusterScopedProperties.size());
assertEquals("someValue",clusterScopedProperties.get("property1"));
Map>> clusterScopedAttributes=clusterScopeConfiguration.getAttributes();
assertEquals(1,clusterScopedAttributes.size());
Map> clusterScopedTypeAttributes=clusterScopedAttributes.get("someType");
assertEquals(1,clusterScopedTypeAttributes.size());
Map clusterScopedTypePropertyAttributes=clusterScopedTypeAttributes.get("property1");
assertEquals(1,clusterScopedTypePropertyAttributes.size());
assertEquals("someAttributePropValue",clusterScopedTypePropertyAttributes.get("attribute1"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetValidators_noDefaultPassword() throws Exception {
Map properties=createBlueprintRequestProperties(CLUSTER_NAME,BLUEPRINT_NAME);
TopologyRequest request=new ProvisionClusterRequest(properties,null);
List validators=request.getTopologyValidators();
assertEquals(1,validators.size());
TopologyValidator pwdValidator=validators.get(0);
TopologyValidator noDefaultPwdValidator=new RequiredPasswordValidator(null);
assertEquals(pwdValidator,noDefaultPwdValidator);
}
Class: org.apache.ambari.server.controller.internal.RepositoryResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
AmbariManagementController managementController=EasyMock.createMock(AmbariManagementController.class);
RepositoryResponse rr=new RepositoryResponse(VAL_BASE_URL,VAL_OS,VAL_REPO_ID,VAL_REPO_NAME,null,null,null);
rr.setStackName(VAL_STACK_NAME);
rr.setStackVersion(VAL_STACK_VERSION);
Set allResponse=new HashSet();
allResponse.add(rr);
expect(managementController.getRepositories(EasyMock.>anyObject())).andReturn(allResponse).times(1);
replay(managementController);
ResourceProvider provider=new RepositoryResourceProvider(managementController);
Set propertyIds=new HashSet();
propertyIds.add(RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_STACK_VERSION_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_REPO_NAME_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_OS_TYPE_PROPERTY_ID);
propertyIds.add(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID).equals(VAL_STACK_NAME).and().property(RepositoryResourceProvider.REPOSITORY_STACK_VERSION_PROPERTY_ID).equals(VAL_STACK_VERSION).toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
Object o=resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_STACK_NAME_PROPERTY_ID);
Assert.assertEquals(VAL_STACK_NAME,o);
o=resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_STACK_VERSION_PROPERTY_ID);
Assert.assertEquals(VAL_STACK_VERSION,o);
o=resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_REPO_NAME_PROPERTY_ID);
Assert.assertEquals(o,VAL_REPO_NAME);
o=resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_BASE_URL_PROPERTY_ID);
Assert.assertEquals(o,VAL_BASE_URL);
o=resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_OS_TYPE_PROPERTY_ID);
Assert.assertEquals(o,VAL_OS);
o=resource.getPropertyValue(RepositoryResourceProvider.REPOSITORY_REPO_ID_PROPERTY_ID);
Assert.assertEquals(o,VAL_REPO_ID);
}
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.RepositoryVersionResourceProviderTest UtilityVerifier InternalCallVerifier NullVerifier HybridVerifier
@Test public void testValidateRepositoryVersion() throws Exception {
StackDAO stackDAO=injector.getInstance(StackDAO.class);
StackEntity stackEntity=stackDAO.find("HDP","1.1");
Assert.assertNotNull(stackEntity);
final RepositoryVersionResourceProvider provider=(RepositoryVersionResourceProvider)injector.getInstance(ResourceProviderFactory.class).getRepositoryVersionResourceProvider();
final RepositoryVersionEntity entity=new RepositoryVersionEntity();
entity.setDisplayName("name");
entity.setStack(stackEntity);
entity.setVersion("1.1");
entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
provider.validateRepositoryVersion(entity);
entity.setVersion("1.1-17");
provider.validateRepositoryVersion(entity);
entity.setVersion("1.1.1.1");
provider.validateRepositoryVersion(entity);
entity.setVersion("1.1.343432.2");
provider.validateRepositoryVersion(entity);
entity.setVersion("1.1.343432.2-234234324");
provider.validateRepositoryVersion(entity);
entity.setOperatingSystems(jsonStringRedhat7);
try {
provider.validateRepositoryVersion(entity);
Assert.fail("Should throw exception");
}
catch ( Exception ex) {
}
entity.setOperatingSystems("");
try {
provider.validateRepositoryVersion(entity);
Assert.fail("Should throw exception");
}
catch ( Exception ex) {
}
StackEntity bigtop=new StackEntity();
stackEntity.setStackName("BIGTOP");
entity.setStack(bigtop);
try {
provider.validateRepositoryVersion(entity);
Assert.fail("Should throw exception");
}
catch ( Exception ex) {
}
final RepositoryVersionDAO repositoryVersionDAO=injector.getInstance(RepositoryVersionDAO.class);
entity.setDisplayName("name");
entity.setStack(stackEntity);
entity.setVersion("1.1");
entity.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
repositoryVersionDAO.create(entity);
final RepositoryVersionEntity entity2=new RepositoryVersionEntity();
entity2.setId(2l);
entity2.setDisplayName("name2");
entity2.setStack(stackEntity);
entity2.setVersion("1.2");
entity2.setOperatingSystems("[{\"OperatingSystems/os_type\":\"redhat6\",\"repositories\":[{\"Repositories/repo_id\":\"1\",\"Repositories/repo_name\":\"1\",\"Repositories/base_url\":\"http://example.com/repo1\"}]}]");
try {
provider.validateRepositoryVersion(entity2);
Assert.fail("Should throw exception: Base url http://example.com/repo1 is already defined for another repository version");
}
catch ( Exception ex) {
}
}
Class: org.apache.ambari.server.controller.internal.RequestImplTest InternalCallVerifier BooleanVerifier
@Test public void testValidPropertyIds(){
Request request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.HostComponent));
Set validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("HostRoles/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("params/run_smoke_test"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/actual_configs"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_stack_id"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/stack_id"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/desired_state"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/state"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/component_name"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/host_name"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("HostRoles/role_id"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Cluster));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Clusters/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Clusters/cluster_id"));
Assert.assertTrue(validPropertyIds.contains("Clusters/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("Clusters/version"));
Assert.assertTrue(validPropertyIds.contains("Clusters/state"));
Assert.assertTrue(validPropertyIds.contains("Clusters/desired_configs"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Service));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("ServiceInfo/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("ServiceInfo/service_name"));
Assert.assertTrue(validPropertyIds.contains("ServiceInfo/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("ServiceInfo/state"));
Assert.assertTrue(validPropertyIds.contains("Services/description"));
Assert.assertTrue(validPropertyIds.contains("Services/display_name"));
Assert.assertTrue(validPropertyIds.contains("Services/attributes"));
Assert.assertTrue(validPropertyIds.contains("params/run_smoke_test"));
Assert.assertTrue(validPropertyIds.contains("params/reconfigure_client"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Host));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Hosts/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Hosts/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("Hosts/host_name"));
Assert.assertTrue(validPropertyIds.contains("Hosts/ip"));
Assert.assertTrue(validPropertyIds.contains("Hosts/attributes"));
Assert.assertTrue(validPropertyIds.contains("Hosts/total_mem"));
Assert.assertTrue(validPropertyIds.contains("Hosts/cpu_count"));
Assert.assertTrue(validPropertyIds.contains("Hosts/ph_cpu_count"));
Assert.assertTrue(validPropertyIds.contains("Hosts/os_arch"));
Assert.assertTrue(validPropertyIds.contains("Hosts/os_type"));
Assert.assertTrue(validPropertyIds.contains("Hosts/rack_info"));
Assert.assertTrue(validPropertyIds.contains("Hosts/last_heartbeat_time"));
Assert.assertTrue(validPropertyIds.contains("Hosts/last_agent_env"));
Assert.assertTrue(validPropertyIds.contains("Hosts/last_registration_time"));
Assert.assertTrue(validPropertyIds.contains("Hosts/disk_info"));
Assert.assertTrue(validPropertyIds.contains("Hosts/host_status"));
Assert.assertTrue(validPropertyIds.contains("Hosts/host_health_report"));
Assert.assertTrue(validPropertyIds.contains("Hosts/public_host_name"));
Assert.assertTrue(validPropertyIds.contains("Hosts/host_state"));
Assert.assertTrue(validPropertyIds.contains("Hosts/desired_configs"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Component));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("ServiceComponentInfo/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("ServiceComponentInfo/service_name"));
Assert.assertTrue(validPropertyIds.contains("ServiceComponentInfo/component_name"));
Assert.assertTrue(validPropertyIds.contains("ServiceComponentInfo/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("ServiceComponentInfo/state"));
Assert.assertTrue(validPropertyIds.contains("ServiceComponents/display_name"));
Assert.assertTrue(validPropertyIds.contains("ServiceComponents/description"));
Assert.assertTrue(validPropertyIds.contains("params/run_smoke_test"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Action));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Action/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Actions/action_name"));
Assert.assertTrue(validPropertyIds.contains("Actions/action_type"));
Assert.assertTrue(validPropertyIds.contains("Actions/inputs"));
Assert.assertTrue(validPropertyIds.contains("Actions/target_service"));
Assert.assertTrue(validPropertyIds.contains("Actions/target_component"));
Assert.assertTrue(validPropertyIds.contains("Actions/description"));
Assert.assertTrue(validPropertyIds.contains("Actions/target_type"));
Assert.assertTrue(validPropertyIds.contains("Actions/default_timeout"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Request));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Requests/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Requests/id"));
Assert.assertTrue(validPropertyIds.contains("Requests/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("Requests/request_status"));
Assert.assertTrue(validPropertyIds.contains("Requests/request_context"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Task));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Task/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Tasks/id"));
Assert.assertTrue(validPropertyIds.contains("Tasks/request_id"));
Assert.assertTrue(validPropertyIds.contains("Tasks/cluster_name"));
Assert.assertTrue(validPropertyIds.contains("Tasks/stage_id"));
Assert.assertTrue(validPropertyIds.contains("Tasks/host_name"));
Assert.assertTrue(validPropertyIds.contains("Tasks/command"));
Assert.assertTrue(validPropertyIds.contains("Tasks/role"));
Assert.assertTrue(validPropertyIds.contains("Tasks/status"));
Assert.assertTrue(validPropertyIds.contains("Tasks/exit_code"));
Assert.assertTrue(validPropertyIds.contains("Tasks/stderr"));
Assert.assertTrue(validPropertyIds.contains("Tasks/stdout"));
Assert.assertTrue(validPropertyIds.contains("Tasks/start_time"));
Assert.assertTrue(validPropertyIds.contains("Tasks/attempt_cnt"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.User));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Users/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Users/user_name"));
Assert.assertTrue(validPropertyIds.contains("Users/password"));
Assert.assertTrue(validPropertyIds.contains("Users/old_password"));
Assert.assertTrue(validPropertyIds.contains("Users/ldap_user"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.Stack));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Stacks/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Stacks/stack_name"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.StackVersion));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Versions/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Versions/stack_name"));
Assert.assertTrue(validPropertyIds.contains("Versions/stack_version"));
Assert.assertTrue(validPropertyIds.contains("Versions/min_upgrade_version"));
request=PropertyHelper.getReadRequest(OperatingSystemResourceProvider.propertyIds);
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("OperatingSystems/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("OperatingSystems/stack_name"));
Assert.assertTrue(validPropertyIds.contains("OperatingSystems/stack_version"));
Assert.assertTrue(validPropertyIds.contains("OperatingSystems/os_type"));
request=PropertyHelper.getReadRequest(RepositoryResourceProvider.propertyIds);
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("Repositories/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("Repositories/stack_name"));
Assert.assertTrue(validPropertyIds.contains("Repositories/stack_version"));
Assert.assertTrue(validPropertyIds.contains("Repositories/os_type"));
Assert.assertTrue(validPropertyIds.contains("Repositories/base_url"));
Assert.assertTrue(validPropertyIds.contains("Repositories/repo_id"));
Assert.assertTrue(validPropertyIds.contains("Repositories/repo_name"));
Assert.assertTrue(validPropertyIds.contains("Repositories/mirrors_list"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.StackService));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("StackServices/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("StackServices/stack_name"));
Assert.assertTrue(validPropertyIds.contains("StackServices/stack_version"));
Assert.assertTrue(validPropertyIds.contains("StackServices/service_name"));
Assert.assertTrue(validPropertyIds.contains("StackServices/user_name"));
Assert.assertTrue(validPropertyIds.contains("StackServices/comments"));
Assert.assertTrue(validPropertyIds.contains("StackServices/service_version"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.StackConfiguration));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("StackConfigurations/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("StackConfigurations/stack_name"));
Assert.assertTrue(validPropertyIds.contains("StackConfigurations/stack_version"));
Assert.assertTrue(validPropertyIds.contains("StackConfigurations/service_name"));
Assert.assertTrue(validPropertyIds.contains("StackConfigurations/property_name"));
Assert.assertTrue(validPropertyIds.contains("StackConfigurations/property_description"));
Assert.assertTrue(validPropertyIds.contains("StackConfigurations/property_value"));
request=PropertyHelper.getReadRequest(PropertyHelper.getPropertyIds(Resource.Type.StackServiceComponent));
validPropertyIds=request.getPropertyIds();
Assert.assertFalse(validPropertyIds.contains("StackServiceComponents/unsupported_property_id"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/stack_version"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/stack_name"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/service_name"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/component_name"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/component_category"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/is_master"));
Assert.assertTrue(validPropertyIds.contains("StackServiceComponents/is_client"));
}
Class: org.apache.ambari.server.controller.internal.RequestOperationLevelTest UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void test_ConstructionFromRequestProperties() throws Exception {
String c1="c1";
String host_component="HOST_COMPONENT";
String service_id="HDFS";
String hostcomponent_id="Namenode";
String host_id="host1";
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(RequestResourceProvider.COMMAND_ID,"RESTART");
requestInfoProperties.put(RequestOperationLevel.OPERATION_LEVEL_ID,host_component);
requestInfoProperties.put(RequestOperationLevel.OPERATION_CLUSTER_ID,c1);
requestInfoProperties.put(RequestOperationLevel.OPERATION_SERVICE_ID,service_id);
requestInfoProperties.put(RequestOperationLevel.OPERATION_HOSTCOMPONENT_ID,hostcomponent_id);
requestInfoProperties.put(RequestOperationLevel.OPERATION_HOST_NAME,host_id);
RequestOperationLevel opLevel=new RequestOperationLevel(requestInfoProperties);
assertEquals(opLevel.getLevel().toString(),"HostComponent");
assertEquals(opLevel.getClusterName(),c1);
assertEquals(opLevel.getServiceName(),service_id);
assertEquals(opLevel.getHostComponentName(),hostcomponent_id);
assertEquals(opLevel.getHostName(),host_id);
requestInfoProperties.put(RequestOperationLevel.OPERATION_LEVEL_ID,"wrong_value");
try {
new RequestOperationLevel(requestInfoProperties);
Assert.fail("Should throw an exception");
}
catch ( IllegalArgumentException e) {
}
requestInfoProperties.put(RequestOperationLevel.OPERATION_LEVEL_ID,host_component);
requestInfoProperties.remove(RequestOperationLevel.OPERATION_CLUSTER_ID);
try {
new RequestOperationLevel(requestInfoProperties);
Assert.fail("Should throw an exception");
}
catch ( IllegalArgumentException e) {
}
}
Class: org.apache.ambari.server.controller.internal.RequestResourceProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResourcesForNonCluster() throws Exception {
Resource.Type type=Resource.Type.Request;
Capture actionRequest=newCapture();
Capture> propertyMap=newCapture();
AmbariManagementController managementController=createMock(AmbariManagementController.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
expect(managementController.createAction(capture(actionRequest),capture(propertyMap))).andReturn(response).anyTimes();
expect(response.getMessage()).andReturn("Message").anyTimes();
replay(managementController,response);
Set> propertySet=new LinkedHashSet>();
Map properties=new LinkedHashMap();
Set> filterSet=new HashSet>();
Map filterMap=new HashMap();
filterMap.put(RequestResourceProvider.HOSTS_ID,"h1,h2");
filterSet.add(filterMap);
properties.put(RequestResourceProvider.REQUEST_RESOURCE_FILTER_ID,filterSet);
propertySet.add(properties);
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(RequestResourceProvider.ACTION_ID,"check_java");
Request request=PropertyHelper.getCreateRequest(propertySet,requestInfoProperties);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
provider.createResources(request);
ExecuteActionRequest capturedRequest=actionRequest.getValue();
Assert.assertTrue(actionRequest.hasCaptured());
Assert.assertFalse("expected an action",capturedRequest.isCommand());
Assert.assertEquals("check_java",capturedRequest.getActionName());
Assert.assertEquals(null,capturedRequest.getCommandName());
Assert.assertNotNull(capturedRequest.getResourceFilters());
Assert.assertEquals(1,capturedRequest.getResourceFilters().size());
RequestResourceFilter capturedResourceFilter=capturedRequest.getResourceFilters().get(0);
Assert.assertEquals(null,capturedResourceFilter.getServiceName());
Assert.assertEquals(null,capturedResourceFilter.getComponentName());
Assert.assertNotNull(capturedResourceFilter.getHostNames());
Assert.assertEquals(2,capturedResourceFilter.getHostNames().size());
Assert.assertEquals(0,actionRequest.getValue().getParameters().size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesCompleted() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock0=createNiceMock(RequestEntity.class);
expect(requestMock0.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock0.getRequestId()).andReturn(100L).anyTimes();
RequestEntity requestMock1=createNiceMock(RequestEntity.class);
expect(requestMock1.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock1.getRequestId()).andReturn(101L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock0));
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock1));
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().completed(2));
}
}
).anyTimes();
replay(managementController,actionManager,requestMock0,requestMock1,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_COMPLETED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(2,resources.size());
for ( Resource resource : resources) {
long id=(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
Assert.assertTrue(id == 100L || id == 101L);
Assert.assertEquals("COMPLETED",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(2,resource.getPropertyValue(RequestResourceProvider.REQUEST_TASK_CNT_ID));
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID));
Assert.assertEquals(2,resource.getPropertyValue(RequestResourceProvider.REQUEST_COMPLETED_TASK_CNT_ID));
Assert.assertEquals(100.0,resource.getPropertyValue(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID));
}
verify(managementController,actionManager,requestMock0,requestMock1,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testRequestStatusWithNoTasks() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
Clusters clusters=createNiceMock(Clusters.class);
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(null).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Collections.singletonList(requestMock));
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(Collections.emptyMap()).anyTimes();
replay(managementController,actionManager,clusters,requestMock,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals(100L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
Assert.assertEquals("COMPLETED",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(100.0,resource.getPropertyValue(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID));
}
verify(managementController,actionManager,clusters,requestMock,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager);
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Collections.singletonList(requestMock)).anyTimes();
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1));
}
}
).anyTimes();
replay(managementController,actionManager,requestDAO,hrcDAO,requestMock);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals(100L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
Assert.assertEquals("IN_PROGRESS",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
}
verify(managementController,actionManager,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResourcesWithoutCluster() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
Clusters clusters=createNiceMock(Clusters.class);
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster(anyObject(String.class))).andReturn(null).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Collections.singletonList(requestMock));
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1));
}
}
).anyTimes();
replay(managementController,actionManager,clusters,requestMock,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals(100L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
Assert.assertEquals("IN_PROGRESS",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID));
}
verify(managementController,actionManager,clusters,requestMock,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesWithCluster() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
expect(cluster.getClusterId()).andReturn(50L).anyTimes();
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getClusterId()).andReturn(50L).anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("c1")).andReturn(cluster).anyTimes();
expect(clusters.getCluster("bad-cluster")).andThrow(new AmbariException("bad cluster!")).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Collections.singletonList(requestMock));
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1));
}
}
).anyTimes();
replay(managementController,actionManager,clusters,cluster,requestMock,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals(100L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
Assert.assertEquals("IN_PROGRESS",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
}
predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_CLUSTER_NAME_PROPERTY_ID).equals("bad-cluster").and().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
try {
provider.getResources(request,predicate);
}
catch ( NoSuchParentResourceException e) {
e.printStackTrace();
}
verify(managementController,actionManager,clusters,cluster,requestMock,requestDAO,hrcDAO);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesInProgress() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock0=createNiceMock(RequestEntity.class);
expect(requestMock0.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock0.getRequestId()).andReturn(100L).anyTimes();
RequestEntity requestMock1=createNiceMock(RequestEntity.class);
expect(requestMock1.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock1.getRequestId()).andReturn(101L).anyTimes();
Capture> requestIdsCapture=new Capture>();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock0));
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock1));
expect(hrcDAO.findAggregateCounts(100L)).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1).pending(1));
}
}
).once();
expect(hrcDAO.findAggregateCounts(101L)).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1).queued(1));
}
}
).once();
replay(managementController,actionManager,requestMock0,requestMock1,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_COMPLETED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_QUEUED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(2,resources.size());
for ( Resource resource : resources) {
long id=(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
Assert.assertTrue(id == 100L || id == 101L);
Assert.assertEquals("IN_PROGRESS",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(2,resource.getPropertyValue(RequestResourceProvider.REQUEST_TASK_CNT_ID));
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID));
if (id == 100L) {
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_QUEUED_TASK_CNT_ID));
int progressPercent=((Double)resource.getPropertyValue(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID)).intValue();
Assert.assertEquals(17,progressPercent);
}
else {
Assert.assertEquals(1,resource.getPropertyValue(RequestResourceProvider.REQUEST_QUEUED_TASK_CNT_ID));
int progressPercent=((Double)resource.getPropertyValue(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID)).intValue();
Assert.assertEquals(21,progressPercent);
}
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_COMPLETED_TASK_CNT_ID));
}
verify(managementController,actionManager,requestMock0,requestMock1,requestDAO,hrcDAO);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesFailed() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock0=createNiceMock(RequestEntity.class);
expect(requestMock0.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock0.getRequestId()).andReturn(100L).anyTimes();
RequestEntity requestMock1=createNiceMock(RequestEntity.class);
expect(requestMock1.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock1.getRequestId()).andReturn(101L).anyTimes();
Capture> requestIdsCapture=new Capture>();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock0));
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock1));
expect(hrcDAO.findAggregateCounts(100L)).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().failed(1).completed(1));
}
}
).once();
expect(hrcDAO.findAggregateCounts(101L)).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().aborted(1).timedout(1));
}
}
).once();
replay(managementController,actionManager,requestMock0,requestMock1,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_COMPLETED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_ABORTED_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_TIMED_OUT_TASK_CNT_ID);
propertyIds.add(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(2,resources.size());
for ( Resource resource : resources) {
long id=(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
Assert.assertTrue(id == 100L || id == 101L);
Assert.assertEquals(2,resource.getPropertyValue(RequestResourceProvider.REQUEST_TASK_CNT_ID));
if (id == 100L) {
Assert.assertEquals("FAILED",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(1,resource.getPropertyValue(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID));
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_ABORTED_TASK_CNT_ID));
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_TIMED_OUT_TASK_CNT_ID));
}
else {
Assert.assertEquals("ABORTED",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(0,resource.getPropertyValue(RequestResourceProvider.REQUEST_FAILED_TASK_CNT_ID));
Assert.assertEquals(1,resource.getPropertyValue(RequestResourceProvider.REQUEST_ABORTED_TASK_CNT_ID));
Assert.assertEquals(1,resource.getPropertyValue(RequestResourceProvider.REQUEST_TIMED_OUT_TASK_CNT_ID));
}
Assert.assertEquals(2,resource.getPropertyValue(RequestResourceProvider.REQUEST_COMPLETED_TASK_CNT_ID));
Assert.assertEquals(100.0,resource.getPropertyValue(RequestResourceProvider.REQUEST_PROGRESS_PERCENT_ID));
}
verify(managementController,actionManager,requestMock0,requestMock1,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesWithRequestSchedule() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
expect(requestMock.getRequestScheduleId()).andReturn(11L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager);
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Collections.singletonList(requestMock)).anyTimes();
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1));
}
}
).anyTimes();
replay(managementController,actionManager,requestDAO,hrcDAO,requestMock);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals(100L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
Assert.assertEquals("IN_PROGRESS",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(11L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE_ID));
}
verify(managementController,actionManager,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesWithoutRequestSchedule() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
expect(requestMock.getRequestScheduleId()).andReturn(null).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager);
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Collections.singletonList(requestMock)).anyTimes();
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1));
}
}
).anyTimes();
replay(managementController,actionManager,requestMock,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID);
propertyIds.add(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals(100L,(long)(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID));
Assert.assertEquals("IN_PROGRESS",resource.getPropertyValue(RequestResourceProvider.REQUEST_STATUS_PROPERTY_ID));
Assert.assertEquals(null,resource.getPropertyValue(RequestResourceProvider.REQUEST_SOURCE_SCHEDULE));
}
verify(managementController,actionManager,requestMock,requestDAO,hrcDAO);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourcesOrPredicate() throws Exception {
Resource.Type type=Resource.Type.Request;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
ActionManager actionManager=createNiceMock(ActionManager.class);
RequestEntity requestMock=createNiceMock(RequestEntity.class);
expect(requestMock.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock.getRequestId()).andReturn(100L).anyTimes();
RequestEntity requestMock1=createNiceMock(RequestEntity.class);
expect(requestMock1.getRequestContext()).andReturn("this is a context").anyTimes();
expect(requestMock1.getRequestId()).andReturn(101L).anyTimes();
Capture> requestIdsCapture=newCapture();
expect(managementController.getActionManager()).andReturn(actionManager).anyTimes();
expect(requestDAO.findByPks(capture(requestIdsCapture),eq(true))).andReturn(Arrays.asList(requestMock,requestMock1)).anyTimes();
expect(hrcDAO.findAggregateCounts((Long)anyObject())).andReturn(new HashMap(){
{
put(1L,HostRoleCommandStatusSummaryDTO.create().inProgress(1));
}
}
).anyTimes();
replay(managementController,actionManager,requestMock,requestMock1,requestDAO,hrcDAO);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("100").or().property(RequestResourceProvider.REQUEST_ID_PROPERTY_ID).equals("101").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(2,resources.size());
for ( Resource resource : resources) {
long id=(Long)resource.getPropertyValue(RequestResourceProvider.REQUEST_ID_PROPERTY_ID);
Assert.assertTrue(id == 100L || id == 101L);
}
verify(managementController,actionManager,requestMock,requestMock1,requestDAO,hrcDAO);
}
Class: org.apache.ambari.server.controller.internal.RequestScheduleResourceProviderTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateRequestSchedule() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
RequestExecutionFactory executionFactory=createNiceMock(RequestExecutionFactory.class);
RequestExecution requestExecution=createNiceMock(RequestExecution.class);
ExecutionScheduleManager executionScheduleManager=createNiceMock(ExecutionScheduleManager.class);
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(managementController.getClusters()).andReturn(clusters);
expect(managementController.getExecutionScheduleManager()).andReturn(executionScheduleManager).anyTimes();
expect(managementController.getRequestExecutionFactory()).andReturn(executionFactory);
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
Capture clusterCapture=new Capture();
Capture batchCapture=new Capture();
Capture scheduleCapture=new Capture();
expect(executionFactory.createNew(capture(clusterCapture),capture(batchCapture),capture(scheduleCapture))).andReturn(requestExecution);
replay(managementController,clusters,cluster,executionFactory,requestExecution,response,executionScheduleManager);
RequestScheduleResourceProvider resourceProvider=getResourceProvider(managementController);
Set> propertySet=new LinkedHashSet>();
Map properties=new LinkedHashMap();
properties.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_CLUSTER_NAME_PROPERTY_ID,"Cluster100");
properties.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_DESC_PROPERTY_ID,"some description");
properties.put(RequestScheduleResourceProvider.SCHEDULE_DAY_OF_WEEK_PROPERTY_ID,"MON");
properties.put(RequestScheduleResourceProvider.SCHEDULE_MINUTES_PROPERTY_ID,"2");
properties.put(RequestScheduleResourceProvider.SCHEDULE_END_TIME_PROPERTY_ID,"2013-11-18T14:29:29-08:00");
properties.put(RequestScheduleResourceProvider.SCHEDULE_DAYS_OF_MONTH_PROPERTY_ID,"*");
HashSet> batch=new HashSet>();
Map batchSettings=new HashMap();
batchSettings.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_BATCH_SEPARATION_PROPERTY_ID,"15");
Map batchRequests=new HashMap();
HashSet> requestSet=new HashSet>();
Map request1=new HashMap();
Map request2=new HashMap();
request1.put(RequestScheduleResourceProvider.BATCH_REQUEST_TYPE_PROPERTY_ID,BatchRequest.Type.PUT.name());
request1.put(RequestScheduleResourceProvider.BATCH_REQUEST_ORDER_ID_PROPERTY_ID,"20");
request1.put(RequestScheduleResourceProvider.BATCH_REQUEST_URI_PROPERTY_ID,"SomeUpdateUri");
request1.put(RequestScheduleResourceProvider.BATCH_REQUEST_BODY_PROPERTY_ID,"data1");
request2.put(RequestScheduleResourceProvider.BATCH_REQUEST_TYPE_PROPERTY_ID,BatchRequest.Type.DELETE.name());
request2.put(RequestScheduleResourceProvider.BATCH_REQUEST_ORDER_ID_PROPERTY_ID,"22");
request2.put(RequestScheduleResourceProvider.BATCH_REQUEST_URI_PROPERTY_ID,"SomeDeleteUri");
requestSet.add(request1);
requestSet.add(request2);
batchRequests.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_BATCH_REQUESTS_PROPERTY_ID,requestSet);
batch.add(batchSettings);
batch.add(batchRequests);
properties.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_BATCH_PROPERTY_ID,batch);
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,null);
resourceProvider.createResources(request);
verify(managementController,clusters,cluster,executionFactory,requestExecution,response,executionScheduleManager);
List testRequests=batchCapture.getValue().getBatchRequests();
Assert.assertNotNull(testRequests);
BatchRequest deleteReq=null;
BatchRequest putReq=null;
for ( BatchRequest testBatchRequest : testRequests) {
if (testBatchRequest.getType().equals(BatchRequest.Type.DELETE.name())) {
deleteReq=testBatchRequest;
}
else {
putReq=testBatchRequest;
}
}
Assert.assertNotNull(deleteReq);
Assert.assertNotNull(putReq);
Assert.assertEquals("data1",putReq.getBody());
Assert.assertNull(deleteReq.getBody());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteRequestSchedule() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
RequestExecution requestExecution=createNiceMock(RequestExecution.class);
ExecutionScheduleManager executionScheduleManager=createNiceMock(ExecutionScheduleManager.class);
Map requestExecutionMap=new HashMap();
requestExecutionMap.put(1L,requestExecution);
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getExecutionScheduleManager()).andReturn(executionScheduleManager).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getAllRequestExecutions()).andReturn(requestExecutionMap);
replay(managementController,clusters,cluster,executionScheduleManager,requestExecution);
RequestScheduleResourceProvider resourceProvider=getResourceProvider(managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)resourceProvider).addObserver(observer);
Predicate predicate=new PredicateBuilder().property(RequestScheduleResourceProvider.REQUEST_SCHEDULE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(RequestScheduleResourceProvider.REQUEST_SCHEDULE_ID_PROPERTY_ID).equals(1L).toPredicate();
resourceProvider.deleteResources(predicate);
ResourceProviderEvent lastEvent=observer.getLastEvent();
Assert.assertNotNull(lastEvent);
Assert.assertEquals(Resource.Type.RequestSchedule,lastEvent.getResourceType());
Assert.assertEquals(ResourceProviderEvent.Type.Delete,lastEvent.getType());
Assert.assertEquals(predicate,lastEvent.getPredicate());
Assert.assertNull(lastEvent.getRequest());
verify(managementController,clusters,cluster,executionScheduleManager,requestExecution);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRequestSchedule() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
RequestStatusResponse response=createNiceMock(RequestStatusResponse.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
final RequestExecution requestExecution=createNiceMock(RequestExecution.class);
RequestScheduleResponse requestScheduleResponse=createNiceMock(RequestScheduleResponse.class);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(managementController.getAuthName()).andReturn("admin").anyTimes();
expect(requestExecution.getId()).andReturn(25L).anyTimes();
expect(requestExecution.getStatus()).andReturn(RequestExecution.Status.SCHEDULED.name()).anyTimes();
expect(requestExecution.convertToResponse()).andReturn(requestScheduleResponse).anyTimes();
expect(requestExecution.convertToResponseWithBody()).andReturn(requestScheduleResponse).anyTimes();
expect(requestScheduleResponse.getId()).andReturn(25L).anyTimes();
expect(requestScheduleResponse.getClusterName()).andReturn("Cluster100").anyTimes();
expect(cluster.getAllRequestExecutions()).andStubAnswer(new IAnswer>(){
@Override public Map answer() throws Throwable {
Map requestExecutionMap=new HashMap();
requestExecutionMap.put(requestExecution.getId(),requestExecution);
return requestExecutionMap;
}
}
);
replay(managementController,clusters,cluster,requestExecution,response,requestScheduleResponse);
RequestScheduleResourceProvider resourceProvider=getResourceProvider(managementController);
Map properties=new LinkedHashMap();
properties.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_CLUSTER_NAME_PROPERTY_ID,"Cluster100");
properties.put(RequestScheduleResourceProvider.REQUEST_SCHEDULE_DESC_PROPERTY_ID,"some description");
Set propertyIds=new HashSet();
propertyIds.add(RequestScheduleResourceProvider.REQUEST_SCHEDULE_CLUSTER_NAME_PROPERTY_ID);
propertyIds.add(RequestScheduleResourceProvider.REQUEST_SCHEDULE_ID_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property(RequestScheduleResourceProvider.REQUEST_SCHEDULE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(RequestScheduleResourceProvider.REQUEST_SCHEDULE_ID_PROPERTY_ID).equals(25L).toPredicate();
Set resources=resourceProvider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Assert.assertEquals(25L,resources.iterator().next().getPropertyValue(RequestScheduleResourceProvider.REQUEST_SCHEDULE_ID_PROPERTY_ID));
predicate=new PredicateBuilder().property(RequestScheduleResourceProvider.REQUEST_SCHEDULE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
resources=resourceProvider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Assert.assertEquals(25L,resources.iterator().next().getPropertyValue(RequestScheduleResourceProvider.REQUEST_SCHEDULE_ID_PROPERTY_ID));
verify(managementController,clusters,cluster,requestExecution,response,requestScheduleResponse);
}
Class: org.apache.ambari.server.controller.internal.RequestStageContainerTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetRequestStatusResponse(){
ActionManager actionManager=createStrictMock(ActionManager.class);
Stage stage1=createNiceMock(Stage.class);
Stage stage2=createNiceMock(Stage.class);
HostRoleCommand command1=createNiceMock(HostRoleCommand.class);
Role role=createNiceMock(Role.class);
List stages=new ArrayList();
RoleCommand roleCommand=RoleCommand.INSTALL;
HostRoleStatus status=HostRoleStatus.IN_PROGRESS;
stages.add(stage1);
stages.add(stage2);
List hostRoleCommands=new ArrayList();
hostRoleCommands.add(command1);
expect(actionManager.getRequestTasks(100)).andReturn(hostRoleCommands);
expect(actionManager.getRequestContext(100)).andReturn("test");
expect(command1.getTaskId()).andReturn(1L);
expect(command1.getRoleCommand()).andReturn(roleCommand);
expect(command1.getRole()).andReturn(role);
expect(command1.getStatus()).andReturn(status);
replay(actionManager,stage1,stage2,command1,role);
RequestStageContainer requestStages=new RequestStageContainer(100L,stages,null,actionManager);
RequestStatusResponse response=requestStages.getRequestStatusResponse();
assertEquals(100,response.getRequestId());
List tasks=response.getTasks();
assertEquals(1,tasks.size());
ShortTaskStatus task=tasks.get(0);
assertEquals(1,task.getTaskId());
assertEquals(roleCommand.toString(),task.getCommand());
assertEquals(status.toString(),task.getStatus());
assertEquals("test",response.getRequestContext());
verify(actionManager,stage1,stage2,command1,role);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetAddStages(){
RequestStageContainer requestStages=new RequestStageContainer(500L,null,null,null);
assertTrue(requestStages.getStages().isEmpty());
Stage stage=createNiceMock(Stage.class);
requestStages.addStages(Collections.singletonList(stage));
assertEquals(1,requestStages.getStages().size());
assertTrue(requestStages.getStages().contains(stage));
Stage stage2=createNiceMock(Stage.class);
Stage stage3=createNiceMock(Stage.class);
List listStages=new ArrayList();
listStages.add(stage2);
listStages.add(stage3);
requestStages.addStages(listStages);
assertEquals(3,requestStages.getStages().size());
listStages=requestStages.getStages();
assertEquals(stage,listStages.get(0));
assertEquals(stage2,listStages.get(1));
assertEquals(stage3,listStages.get(2));
}
Class: org.apache.ambari.server.controller.internal.RequestStatusImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetStatus() throws Exception {
RequestStatusImpl status=new RequestStatusImpl(null);
Assert.assertEquals(RequestStatus.Status.Complete,status.getStatus());
Resource requestResource=new ResourceImpl(Resource.Type.Request);
requestResource.setProperty("Requests/status","InProgress");
status=new RequestStatusImpl(requestResource);
Assert.assertEquals(RequestStatus.Status.InProgress,status.getStatus());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetAssociatedResources() throws Exception {
RequestStatusImpl status=new RequestStatusImpl(null);
Assert.assertEquals(Collections.emptySet(),status.getAssociatedResources());
Resource associatedResource=new ResourceImpl(Resource.Type.Service);
Set associatedResources=Collections.singleton(associatedResource);
status=new RequestStatusImpl(null,associatedResources);
Assert.assertEquals(associatedResources,status.getAssociatedResources());
}
Class: org.apache.ambari.server.controller.internal.ResourceImplTest InternalCallVerifier BooleanVerifier
@Test public void testAddCategory(){
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.addCategory("c1");
resource.addCategory("c2/sub2");
resource.addCategory("c3/sub3/sub3a");
Assert.assertTrue(resource.getPropertiesMap().containsKey("c1"));
Assert.assertTrue(resource.getPropertiesMap().containsKey("c2/sub2"));
Assert.assertTrue(resource.getPropertiesMap().containsKey("c3/sub3/sub3a"));
}
InternalCallVerifier BooleanVerifier
@Test public void testEquals(){
Resource resource1=new ResourceImpl(Resource.Type.Cluster);
Resource resource2=new ResourceImpl(Resource.Type.Cluster);
Resource resource3=new ResourceImpl(Resource.Type.Host);
Assert.assertTrue(resource1.equals(resource2));
Assert.assertTrue(resource2.equals(resource1));
Assert.assertFalse(resource1.equals(resource3));
Assert.assertFalse(resource3.equals(resource1));
Assert.assertFalse(resource2.equals(resource3));
Assert.assertFalse(resource3.equals(resource2));
resource1.setProperty("p1","foo");
resource2.setProperty("p1","bar");
Assert.assertFalse(resource1.equals(resource2));
Assert.assertFalse(resource2.equals(resource1));
resource2.setProperty("p1","foo");
Assert.assertTrue(resource1.equals(resource2));
Assert.assertTrue(resource2.equals(resource1));
}
InternalCallVerifier EqualityVerifier
@Test public void testCopyConstructor(){
Resource resource=new ResourceImpl(Resource.Type.Cluster);
String p1=PropertyHelper.getPropertyId(null,"p1");
String p2=PropertyHelper.getPropertyId("c1","p2");
String p3=PropertyHelper.getPropertyId("c1/c2","p3");
String p4=PropertyHelper.getPropertyId("c1/c2/c3","p4");
String p5=PropertyHelper.getPropertyId("c1","p5");
resource.setProperty(p1,"foo");
Assert.assertEquals("foo",resource.getPropertyValue(p1));
resource.setProperty(p2,1);
Assert.assertEquals(1,resource.getPropertyValue(p2));
resource.setProperty(p3,(float)1.99);
Assert.assertEquals((float)1.99,resource.getPropertyValue(p3));
resource.setProperty(p4,1.99);
Assert.assertEquals(1.99,resource.getPropertyValue(p4));
resource.setProperty(p5,65L);
Assert.assertEquals(65L,resource.getPropertyValue(p5));
Resource copy=new ResourceImpl(resource);
Assert.assertEquals("foo",copy.getPropertyValue(p1));
Assert.assertEquals(1,copy.getPropertyValue(p2));
Assert.assertEquals((float)1.99,copy.getPropertyValue(p3));
Assert.assertEquals(1.99,copy.getPropertyValue(p4));
Assert.assertEquals(65L,copy.getPropertyValue(p5));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetProperty(){
Resource resource=new ResourceImpl(Resource.Type.Cluster);
String propertyId=PropertyHelper.getPropertyId("c1","p1");
resource.setProperty(propertyId,"foo");
Assert.assertEquals("foo",resource.getPropertyValue(propertyId));
resource.setProperty(propertyId,1);
Assert.assertEquals(1,resource.getPropertyValue(propertyId));
resource.setProperty(propertyId,(float)1.99);
Assert.assertEquals((float)1.99,resource.getPropertyValue(propertyId));
resource.setProperty(propertyId,1.99);
Assert.assertEquals(1.99,resource.getPropertyValue(propertyId));
resource.setProperty(propertyId,65L);
Assert.assertEquals(65L,resource.getPropertyValue(propertyId));
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetPropertiesMap(){
Resource resource=new ResourceImpl(Resource.Type.Cluster);
String p1=PropertyHelper.getPropertyId(null,"p1");
String p2=PropertyHelper.getPropertyId("c1","p2");
String p3=PropertyHelper.getPropertyId("c1/c2","p3");
String p4=PropertyHelper.getPropertyId("c1/c2/c3","p4");
String p5=PropertyHelper.getPropertyId("c1","p5");
resource.setProperty(p1,"foo");
resource.setProperty(p2,1);
resource.setProperty(p3,(float)1.99);
resource.setProperty(p4,1.99);
resource.setProperty(p5,65L);
Map> map=resource.getPropertiesMap();
Assert.assertEquals(4,map.keySet().size());
Assert.assertTrue(map.containsKey(""));
Assert.assertTrue(map.containsKey("c1"));
Assert.assertTrue(map.containsKey("c1/c2"));
Assert.assertTrue(map.containsKey("c1/c2/c3"));
String lastCategory=null;
for ( Map.Entry> entry : map.entrySet()) {
String category=entry.getKey();
if (lastCategory != null) {
Assert.assertTrue(category.compareTo(lastCategory) > 0);
}
lastCategory=category;
String lastProperty=null;
for ( String property : entry.getValue().keySet()) {
if (lastProperty != null) {
Assert.assertTrue(property.compareTo(lastProperty) > 0);
}
lastProperty=property;
}
}
}
Class: org.apache.ambari.server.controller.internal.RoleAuthorizationResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResource() throws Exception {
RoleAuthorizationEntity roleAuthorizationEntity1=createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity1.getAuthorizationId()).andReturn("TEST.DO_SOMETHING").anyTimes();
expect(roleAuthorizationEntity1.getAuthorizationName()).andReturn("Do Something").anyTimes();
RoleAuthorizationEntity roleAuthorizationEntity2=createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity2.getAuthorizationId()).andReturn("TEST.DO_SOMETHING_ELSE").anyTimes();
expect(roleAuthorizationEntity2.getAuthorizationName()).andReturn("Do Something Else").anyTimes();
List authorizationEntities=new ArrayList();
authorizationEntities.add(roleAuthorizationEntity1);
authorizationEntities.add(roleAuthorizationEntity2);
PermissionEntity permissionEntry=createStrictMock(PermissionEntity.class);
expect(permissionEntry.getAuthorizations()).andReturn(authorizationEntities).once();
PermissionDAO permissionDAO=injector.getInstance(PermissionDAO.class);
expect(permissionDAO.findById(1)).andReturn(permissionEntry).once();
replayAll();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider=new RoleAuthorizationResourceProvider(managementController);
Predicate predicate=new PredicateBuilder().begin().property(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID).equals("TEST.DO_SOMETHING").and().property(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID).equals("1").end().toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("TEST.DO_SOMETHING",resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID));
Assert.assertEquals("Do Something",resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_NAME_PROPERTY_ID));
Assert.assertEquals(1,resource.getPropertyValue(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID));
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesForPermission() throws Exception {
RoleAuthorizationEntity roleAuthorizationEntity=createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity.getAuthorizationId()).andReturn("TEST.DO_SOMETHING").once();
expect(roleAuthorizationEntity.getAuthorizationName()).andReturn("Do Something").once();
List authorizationEntities=new ArrayList();
authorizationEntities.add(roleAuthorizationEntity);
PermissionEntity permissionEntry=createStrictMock(PermissionEntity.class);
expect(permissionEntry.getAuthorizations()).andReturn(authorizationEntities).once();
PermissionDAO permissionDAO=injector.getInstance(PermissionDAO.class);
expect(permissionDAO.findById(1)).andReturn(permissionEntry).once();
replayAll();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider=new RoleAuthorizationResourceProvider(managementController);
Predicate predicate=new PredicateBuilder().property(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID).equals("1").toPredicate();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("TEST.DO_SOMETHING",resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID));
Assert.assertEquals("Do Something",resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_NAME_PROPERTY_ID));
Assert.assertEquals(1,resource.getPropertyValue(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID));
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
RoleAuthorizationEntity roleAuthorizationEntity=createNiceMock(RoleAuthorizationEntity.class);
expect(roleAuthorizationEntity.getAuthorizationId()).andReturn("TEST.DO_SOMETHING");
expect(roleAuthorizationEntity.getAuthorizationName()).andReturn("Do Something");
List authorizationEntities=new ArrayList();
authorizationEntities.add(roleAuthorizationEntity);
RoleAuthorizationDAO roleAuthorizationDAO=injector.getInstance(RoleAuthorizationDAO.class);
expect(roleAuthorizationDAO.findAll()).andReturn(authorizationEntities);
replayAll();
AmbariManagementController managementController=injector.getInstance(AmbariManagementController.class);
RoleAuthorizationResourceProvider provider=new RoleAuthorizationResourceProvider(managementController);
injector.injectMembers(provider);
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("TEST.DO_SOMETHING",resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_ID_PROPERTY_ID));
Assert.assertEquals("Do Something",resource.getPropertyValue(RoleAuthorizationResourceProvider.AUTHORIZATION_NAME_PROPERTY_ID));
Assert.assertNull(resource.getPropertyValue(RoleAuthorizationResourceProvider.PERMISSION_ID_PROPERTY_ID));
verifyAll();
}
Class: org.apache.ambari.server.controller.internal.RootServiceComponentResourceProviderTest APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.RootServiceComponent;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new RootServiceComponentResponse("component1","1.1.1",Collections.emptyMap()));
allResponse.add(new RootServiceComponentResponse("component2","1.1.1",Collections.emptyMap()));
allResponse.add(new RootServiceComponentResponse("component3","1.1.1",Collections.emptyMap()));
allResponse.add(new RootServiceComponentResponse(RootServiceResponseFactory.Components.AMBARI_SERVER.name(),"1.1.1",Collections.emptyMap()));
Set nameResponse=new HashSet();
nameResponse.add(new RootServiceComponentResponse("component4","1.1.1",Collections.emptyMap()));
expect(managementController.getRootServiceComponents(EasyMock.>anyObject())).andReturn(allResponse).once();
expect(managementController.getRootServiceComponents(EasyMock.>anyObject())).andReturn(nameResponse).once();
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RootServiceComponentResourceProvider.SERVICE_NAME_PROPERTY_ID);
propertyIds.add(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID);
propertyIds.add(RootServiceComponentResourceProvider.PROPERTIES_PROPERTY_ID);
propertyIds.add(RootServiceComponentResourceProvider.COMPONENT_VERSION_PROPERTY_ID);
propertyIds.add(RootServiceComponentResourceProvider.PROPERTIES_SERVER_CLOCK);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String componentName=(String)resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID);
String componentVersion=(String)resource.getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_VERSION_PROPERTY_ID);
Long server_clock=(Long)resource.getPropertyValue(RootServiceComponentResourceProvider.PROPERTIES_SERVER_CLOCK);
if (componentName.equals(RootServiceResponseFactory.Components.AMBARI_SERVER.name())) {
Assert.assertNotNull(server_clock);
}
else {
Assert.assertNull(server_clock);
}
Assert.assertTrue(allResponse.contains(new RootServiceComponentResponse(componentName,componentVersion,Collections.emptyMap())));
}
Predicate predicate=new PredicateBuilder().property(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID).equals("component4").toPredicate();
resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Assert.assertEquals("component4",resources.iterator().next().getPropertyValue(RootServiceComponentResourceProvider.COMPONENT_NAME_PROPERTY_ID));
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.RootServiceResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.RootService;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new RootServiceResponse("service1"));
allResponse.add(new RootServiceResponse("service2"));
allResponse.add(new RootServiceResponse("service3"));
Set nameResponse=new HashSet();
nameResponse.add(new RootServiceResponse("service4"));
expect(managementController.getRootServices(EasyMock.>anyObject())).andReturn(allResponse).once();
expect(managementController.getRootServices(EasyMock.>anyObject())).andReturn(nameResponse).once();
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String serviceName=(String)resource.getPropertyValue(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID);
Assert.assertTrue(allResponse.contains(new RootServiceResponse(serviceName)));
}
Predicate predicate=new PredicateBuilder().property(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID).equals("service4").toPredicate();
resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Assert.assertEquals("service4",resources.iterator().next().getPropertyValue(RootServiceResourceProvider.SERVICE_NAME_PROPERTY_ID));
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.ScaleClusterRequestTest APIUtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void test_basic_hostCount() throws Exception {
reset(hostResourceProvider);
replay(hostResourceProvider);
ScaleClusterRequest scaleClusterRequest=new ScaleClusterRequest(Collections.singleton(createScaleClusterPropertiesGroup1_HostCount(CLUSTER_NAME,BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE,scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)",CLUSTER_NAME,"1"),scaleClusterRequest.getDescription());
assertEquals(CLUSTER_NAME,scaleClusterRequest.getClusterName());
assertSame(blueprint,scaleClusterRequest.getBlueprint());
Map hostGroupInfo=scaleClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(0,scaleClusterRequest.getTopologyValidators().size());
HostGroupInfo group2Info=hostGroupInfo.get(GROUP2_NAME);
assertEquals(GROUP2_NAME,group2Info.getHostGroupName());
assertEquals(0,group2Info.getHostNames().size());
assertEquals(1,group2Info.getRequestedHostCount());
assertNull(group2Info.getPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void test_basic_hostCount2() throws Exception {
reset(hostResourceProvider);
replay(hostResourceProvider);
ScaleClusterRequest scaleClusterRequest=new ScaleClusterRequest(Collections.singleton(createScaleClusterPropertiesGroup1_HostCount2(CLUSTER_NAME,BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE,scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)",CLUSTER_NAME,"2"),scaleClusterRequest.getDescription());
assertEquals(CLUSTER_NAME,scaleClusterRequest.getClusterName());
assertSame(blueprint,scaleClusterRequest.getBlueprint());
Map hostGroupInfo=scaleClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(0,scaleClusterRequest.getTopologyValidators().size());
HostGroupInfo group2Info=hostGroupInfo.get(GROUP3_NAME);
assertEquals(GROUP3_NAME,group2Info.getHostGroupName());
assertEquals(0,group2Info.getHostNames().size());
assertEquals(2,group2Info.getRequestedHostCount());
assertNull(group2Info.getPredicate());
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void test_basic_hostCountAndPredicate() throws Exception {
ScaleClusterRequest scaleClusterRequest=new ScaleClusterRequest(Collections.singleton(createScaleClusterPropertiesGroup1_HostCountAndPredicate(CLUSTER_NAME,BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE,scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)",CLUSTER_NAME,"1"),scaleClusterRequest.getDescription());
assertEquals(CLUSTER_NAME,scaleClusterRequest.getClusterName());
assertSame(blueprint,scaleClusterRequest.getBlueprint());
Map hostGroupInfo=scaleClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(0,scaleClusterRequest.getTopologyValidators().size());
HostGroupInfo group3Info=hostGroupInfo.get(GROUP3_NAME);
assertEquals(GROUP3_NAME,group3Info.getHostGroupName());
assertEquals(0,group3Info.getHostNames().size());
assertEquals(1,group3Info.getRequestedHostCount());
assertEquals(PREDICATE,group3Info.getPredicateString());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMultipleHostNames() throws Exception {
reset(hostResourceProvider);
replay(hostResourceProvider);
Set> propertySet=new HashSet>();
propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME,BLUEPRINT_NAME));
propertySet.add(createScaleClusterPropertiesGroup1_HostName2(CLUSTER_NAME,BLUEPRINT_NAME));
ScaleClusterRequest scaleClusterRequest=new ScaleClusterRequest(propertySet);
assertEquals(TopologyRequest.Type.SCALE,scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)",CLUSTER_NAME,"2"),scaleClusterRequest.getDescription());
assertEquals(CLUSTER_NAME,scaleClusterRequest.getClusterName());
assertSame(blueprint,scaleClusterRequest.getBlueprint());
Map hostGroupInfo=scaleClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(0,scaleClusterRequest.getTopologyValidators().size());
HostGroupInfo group1Info=hostGroupInfo.get(GROUP1_NAME);
assertEquals(GROUP1_NAME,group1Info.getHostGroupName());
assertEquals(2,group1Info.getHostNames().size());
assertTrue(group1Info.getHostNames().contains(HOST1_NAME));
assertTrue(group1Info.getHostNames().contains(HOST2_NAME));
assertEquals(2,group1Info.getRequestedHostCount());
assertNull(group1Info.getPredicate());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void test_basic_hostName() throws Exception {
reset(hostResourceProvider);
replay(hostResourceProvider);
ScaleClusterRequest scaleClusterRequest=new ScaleClusterRequest(Collections.singleton(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME,BLUEPRINT_NAME)));
assertEquals(TopologyRequest.Type.SCALE,scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)",CLUSTER_NAME,"1"),scaleClusterRequest.getDescription());
assertEquals(CLUSTER_NAME,scaleClusterRequest.getClusterName());
assertSame(blueprint,scaleClusterRequest.getBlueprint());
Map hostGroupInfo=scaleClusterRequest.getHostGroupInfo();
assertEquals(1,hostGroupInfo.size());
assertEquals(0,scaleClusterRequest.getTopologyValidators().size());
HostGroupInfo group1Info=hostGroupInfo.get(GROUP1_NAME);
assertEquals(GROUP1_NAME,group1Info.getHostGroupName());
assertEquals(1,group1Info.getHostNames().size());
assertTrue(group1Info.getHostNames().contains(HOST1_NAME));
assertEquals(1,group1Info.getRequestedHostCount());
assertNull(group1Info.getPredicate());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMultipleHostGroups() throws Exception {
Set> propertySet=new HashSet>();
propertySet.add(createScaleClusterPropertiesGroup1_HostCountAndPredicate(CLUSTER_NAME,BLUEPRINT_NAME));
propertySet.add(createScaleClusterPropertiesGroup1_HostCount(CLUSTER_NAME,BLUEPRINT_NAME));
propertySet.add(createScaleClusterPropertiesGroup1_HostName(CLUSTER_NAME,BLUEPRINT_NAME));
ScaleClusterRequest scaleClusterRequest=new ScaleClusterRequest(propertySet);
assertEquals(TopologyRequest.Type.SCALE,scaleClusterRequest.getType());
assertEquals(String.format("Scale Cluster '%s' (+%s hosts)",CLUSTER_NAME,"3"),scaleClusterRequest.getDescription());
assertEquals(CLUSTER_NAME,scaleClusterRequest.getClusterName());
assertSame(blueprint,scaleClusterRequest.getBlueprint());
Map hostGroupInfo=scaleClusterRequest.getHostGroupInfo();
assertEquals(3,hostGroupInfo.size());
assertEquals(0,scaleClusterRequest.getTopologyValidators().size());
HostGroupInfo group1Info=hostGroupInfo.get(GROUP1_NAME);
assertEquals(GROUP1_NAME,group1Info.getHostGroupName());
assertEquals(1,group1Info.getHostNames().size());
assertTrue(group1Info.getHostNames().contains(HOST1_NAME));
assertEquals(1,group1Info.getRequestedHostCount());
assertNull(group1Info.getPredicate());
HostGroupInfo group2Info=hostGroupInfo.get(GROUP2_NAME);
assertEquals(GROUP2_NAME,group2Info.getHostGroupName());
assertEquals(0,group2Info.getHostNames().size());
assertEquals(1,group2Info.getRequestedHostCount());
assertNull(group2Info.getPredicate());
HostGroupInfo group3Info=hostGroupInfo.get(GROUP3_NAME);
assertEquals(GROUP3_NAME,group3Info.getHostGroupName());
assertEquals(0,group3Info.getHostNames().size());
assertEquals(1,group3Info.getRequestedHostCount());
assertEquals(PREDICATE,group3Info.getPredicateString());
}
Class: org.apache.ambari.server.controller.internal.SchemaImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetKeyPropertyId(){
Schema schema=new SchemaImpl(resourceProvider);
Assert.assertEquals(PropertyHelper.getPropertyId("c1","p1"),schema.getKeyPropertyId(Resource.Type.Cluster));
Assert.assertEquals(PropertyHelper.getPropertyId("c1","p2"),schema.getKeyPropertyId(Resource.Type.Host));
Assert.assertEquals(PropertyHelper.getPropertyId("c1","p3"),schema.getKeyPropertyId(Resource.Type.Component));
}
Class: org.apache.ambari.server.controller.internal.ServiceResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteResourcesBadServiceState() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
String serviceName="Service100";
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getClusterId()).andReturn(2L).anyTimes();
expect(cluster.getService(serviceName)).andReturn(service).anyTimes();
expect(service.getDesiredState()).andReturn(State.STARTED).anyTimes();
expect(service.getName()).andReturn(serviceName).anyTimes();
expect(service.getServiceComponents()).andReturn(new HashMap());
expect(service.getCluster()).andReturn(cluster);
cluster.deleteService(serviceName);
replay(managementController,clusters,cluster,service);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=getServiceProvider(managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
Predicate predicate=new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals(serviceName).toPredicate();
provider.deleteResources(predicate);
ResourceProviderEvent lastEvent=observer.getLastEvent();
Assert.assertNotNull(lastEvent);
Assert.assertEquals(Resource.Type.Service,lastEvent.getResourceType());
Assert.assertEquals(ResourceProviderEvent.Type.Delete,lastEvent.getType());
Assert.assertEquals(predicate,lastEvent.getPredicate());
Assert.assertNull(lastEvent.getRequest());
verify(managementController,clusters,cluster,service);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_KerberosSpecificProperties_KDCInvalidCredentials() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service0=createNiceMock(Service.class);
ServiceResponse serviceResponse0=createNiceMock(ServiceResponse.class);
StackId stackId=createNiceMock(StackId.class);
ServiceFactory serviceFactory=createNiceMock(ServiceFactory.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
KerberosHelper kerberosHeper=createStrictMock(KerberosHelper.class);
Map allResponseMap=new HashMap();
allResponseMap.put("KERBEROS",service0);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getServiceFactory()).andReturn(serviceFactory).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(Collections.emptySet()).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getServices()).andReturn(allResponseMap).anyTimes();
expect(cluster.getService("KERBEROS")).andReturn(service0);
expect(service0.convertToResponse()).andReturn(serviceResponse0).anyTimes();
expect(service0.getName()).andReturn("Service100").anyTimes();
expect(serviceResponse0.getClusterName()).andReturn("Cluster100").anyTimes();
expect(serviceResponse0.getServiceName()).andReturn("KERBEROS").anyTimes();
kerberosHeper.validateKDCCredentials(cluster);
expectLastCall().andThrow(new KerberosAdminAuthenticationException("Invalid KDC administrator credentials."));
replay(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHeper);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=getServiceProvider(managementController);
Class> c=provider.getClass();
Field f=c.getDeclaredField("kerberosHelper");
f.setAccessible(true);
f.set(provider,kerberosHeper);
Predicate predicate=new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("KERBEROS").toPredicate();
Request request=PropertyHelper.getReadRequest("ServiceInfo","Services");
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("Cluster100",resource.getPropertyValue(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("KERBEROS",resource.getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
Assert.assertEquals("INVALID_CREDENTIALS",resource.getPropertyValue("Services/attributes/kdc_validation_result"));
Assert.assertEquals("Invalid KDC administrator credentials.",resource.getPropertyValue("Services/attributes/kdc_validation_failure_details"));
}
verify(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHeper);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_KerberosSpecificProperties() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service0=createNiceMock(Service.class);
ServiceResponse serviceResponse0=createNiceMock(ServiceResponse.class);
StackId stackId=createNiceMock(StackId.class);
ServiceFactory serviceFactory=createNiceMock(ServiceFactory.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
KerberosHelper kerberosHeper=createStrictMock(KerberosHelper.class);
Map allResponseMap=new HashMap();
allResponseMap.put("KERBEROS",service0);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getServiceFactory()).andReturn(serviceFactory).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(Collections.emptySet()).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getServices()).andReturn(allResponseMap).anyTimes();
expect(cluster.getService("KERBEROS")).andReturn(service0);
expect(service0.convertToResponse()).andReturn(serviceResponse0).anyTimes();
expect(service0.getName()).andReturn("Service100").anyTimes();
expect(serviceResponse0.getClusterName()).andReturn("Cluster100").anyTimes();
expect(serviceResponse0.getServiceName()).andReturn("KERBEROS").anyTimes();
kerberosHeper.validateKDCCredentials(cluster);
replay(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHeper);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=getServiceProvider(managementController);
Class> c=provider.getClass();
Field f=c.getDeclaredField("kerberosHelper");
f.setAccessible(true);
f.set(provider,kerberosHeper);
Predicate predicate=new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("KERBEROS").toPredicate();
Request request=PropertyHelper.getReadRequest("ServiceInfo","Services");
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("Cluster100",resource.getPropertyValue(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("KERBEROS",resource.getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
Assert.assertEquals("OK",resource.getPropertyValue("Services/attributes/kdc_validation_result"));
Assert.assertEquals("",resource.getPropertyValue("Services/attributes/kdc_validation_failure_details"));
}
verify(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHeper);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_KerberosSpecificProperties_NoKDCValidation() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service0=createNiceMock(Service.class);
ServiceResponse serviceResponse0=createNiceMock(ServiceResponse.class);
StackId stackId=createNiceMock(StackId.class);
ServiceFactory serviceFactory=createNiceMock(ServiceFactory.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
KerberosHelper kerberosHelper=createStrictMock(KerberosHelper.class);
Map allResponseMap=new HashMap();
allResponseMap.put("KERBEROS",service0);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getServiceFactory()).andReturn(serviceFactory).anyTimes();
expect(managementController.getHostComponents(EasyMock.>anyObject())).andReturn(Collections.emptySet()).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getServices()).andReturn(allResponseMap).anyTimes();
expect(cluster.getService("KERBEROS")).andReturn(service0);
expect(service0.convertToResponse()).andReturn(serviceResponse0).anyTimes();
expect(service0.getName()).andReturn("Service100").anyTimes();
expect(serviceResponse0.getClusterName()).andReturn("Cluster100").anyTimes();
expect(serviceResponse0.getServiceName()).andReturn("KERBEROS").anyTimes();
replay(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHelper);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=getServiceProvider(managementController);
Class> c=provider.getClass();
Field f=c.getDeclaredField("kerberosHelper");
f.setAccessible(true);
f.set(provider,kerberosHelper);
Predicate predicate=new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("KERBEROS").toPredicate();
Request request=PropertyHelper.getReadRequest("ServiceInfo");
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("Cluster100",resource.getPropertyValue(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("KERBEROS",resource.getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
}
verify(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHelper);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCheckPropertyIds() throws Exception {
Set propertyIds=new HashSet();
propertyIds.add("foo");
propertyIds.add("cat1/foo");
propertyIds.add("cat2/bar");
propertyIds.add("cat2/baz");
propertyIds.add("cat3/sub1/bam");
propertyIds.add("cat4/sub2/sub3/bat");
propertyIds.add("cat5/subcat5/map");
Map keyPropertyIds=new HashMap();
AmbariManagementController managementController=createMock(AmbariManagementController.class);
MaintenanceStateHelper maintenanceStateHelperMock=createNiceMock(MaintenanceStateHelper.class);
AbstractResourceProvider provider=new ServiceResourceProvider(propertyIds,keyPropertyIds,managementController,maintenanceStateHelperMock);
Set unsupported=provider.checkPropertyIds(Collections.singleton("foo"));
Assert.assertTrue(unsupported.isEmpty());
Assert.assertTrue(provider.checkPropertyIds(Collections.singleton("cat5/subcat5/map/key")).isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("bar"));
Assert.assertEquals(1,unsupported.size());
Assert.assertTrue(unsupported.contains("bar"));
unsupported=provider.checkPropertyIds(Collections.singleton("cat1/foo"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("cat1"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("config"));
Assert.assertTrue(unsupported.isEmpty());
unsupported=provider.checkPropertyIds(Collections.singleton("config/unknown_property"));
Assert.assertTrue(unsupported.isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_KerberosSpecificProperties_KDCMissingCredentials() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service0=createNiceMock(Service.class);
ServiceResponse serviceResponse0=createNiceMock(ServiceResponse.class);
StackId stackId=createNiceMock(StackId.class);
ServiceFactory serviceFactory=createNiceMock(ServiceFactory.class);
AmbariMetaInfo ambariMetaInfo=createNiceMock(AmbariMetaInfo.class);
KerberosHelper kerberosHeper=createStrictMock(KerberosHelper.class);
Map allResponseMap=new HashMap();
allResponseMap.put("KERBEROS",service0);
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(managementController.getAmbariMetaInfo()).andReturn(ambariMetaInfo).anyTimes();
expect(managementController.getServiceFactory()).andReturn(serviceFactory).anyTimes();
expect(managementController.getHostComponents((Set)anyObject())).andReturn(Collections.emptySet()).anyTimes();
expect(clusters.getCluster("Cluster100")).andReturn(cluster).anyTimes();
expect(cluster.getServices()).andReturn(allResponseMap).anyTimes();
expect(cluster.getService("KERBEROS")).andReturn(service0);
expect(service0.convertToResponse()).andReturn(serviceResponse0).anyTimes();
expect(service0.getName()).andReturn("Service100").anyTimes();
expect(serviceResponse0.getClusterName()).andReturn("Cluster100").anyTimes();
expect(serviceResponse0.getServiceName()).andReturn("KERBEROS").anyTimes();
kerberosHeper.validateKDCCredentials(cluster);
expectLastCall().andThrow(new KerberosMissingAdminCredentialsException("Missing KDC administrator credentials."));
replay(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHeper);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=getServiceProvider(managementController);
Class> c=provider.getClass();
Field f=c.getDeclaredField("kerberosHelper");
f.setAccessible(true);
f.set(provider,kerberosHeper);
Predicate predicate=new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals("KERBEROS").toPredicate();
Request request=PropertyHelper.getReadRequest("ServiceInfo","Services");
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
Assert.assertEquals("Cluster100",resource.getPropertyValue(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals("KERBEROS",resource.getPropertyValue(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID));
Assert.assertEquals("MISSING_CREDENTIALS",resource.getPropertyValue("Services/attributes/kdc_validation_result"));
Assert.assertEquals("Missing KDC administrator credentials.",resource.getPropertyValue("Services/attributes/kdc_validation_failure_details"));
}
verify(managementController,clusters,cluster,service0,serviceResponse0,ambariMetaInfo,stackId,serviceFactory,kerberosHeper);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteResourcesStoppedComponentState() throws Exception {
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Clusters clusters=createNiceMock(Clusters.class);
Cluster cluster=createNiceMock(Cluster.class);
Service service=createNiceMock(Service.class);
class TestComponent {
public String Name;
public ServiceComponent Component;
public State DesiredState;
public TestComponent( String name, ServiceComponent component, State desiredState){
Name=name;
Component=component;
DesiredState=desiredState;
}
}
TestComponent component1=new TestComponent("Component100",createNiceMock(ServiceComponent.class),State.INSTALLED);
TestComponent component2=new TestComponent("Component101",createNiceMock(ServiceComponent.class),State.INSTALLED);
TestComponent component3=new TestComponent("Component102",createNiceMock(ServiceComponent.class),State.INSTALLED);
Map scMap=new HashMap();
scMap.put(component1.Name,component1.Component);
scMap.put(component2.Name,component2.Component);
scMap.put(component3.Name,component3.Component);
String clusterName="Cluster100";
String serviceName="Service100";
expect(managementController.getClusters()).andReturn(clusters).anyTimes();
expect(clusters.getCluster(clusterName)).andReturn(cluster).anyTimes();
expect(cluster.getService(serviceName)).andReturn(service).anyTimes();
expect(service.getDesiredState()).andReturn(State.STARTED).anyTimes();
expect(service.getName()).andReturn(serviceName).anyTimes();
expect(service.getServiceComponents()).andReturn(scMap).anyTimes();
expect(component1.Component.getDesiredState()).andReturn(component1.DesiredState).anyTimes();
expect(component2.Component.getDesiredState()).andReturn(component2.DesiredState).anyTimes();
expect(component3.Component.getDesiredState()).andReturn(component3.DesiredState).anyTimes();
expect(component1.Component.canBeRemoved()).andReturn(component1.DesiredState.isRemovableState()).anyTimes();
expect(component2.Component.canBeRemoved()).andReturn(component2.DesiredState.isRemovableState()).anyTimes();
expect(component3.Component.canBeRemoved()).andReturn(component3.DesiredState.isRemovableState()).anyTimes();
expect(service.getCluster()).andReturn(cluster);
cluster.deleteService(serviceName);
replay(managementController,clusters,cluster,service,component1.Component,component2.Component,component3.Component);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
ResourceProvider provider=getServiceProvider(managementController);
AbstractResourceProviderTest.TestObserver observer=new AbstractResourceProviderTest.TestObserver();
((ObservableResourceProvider)provider).addObserver(observer);
Predicate predicate=new PredicateBuilder().property(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID).equals(clusterName).and().property(ServiceResourceProvider.SERVICE_SERVICE_NAME_PROPERTY_ID).equals(serviceName).toPredicate();
provider.deleteResources(predicate);
ResourceProviderEvent lastEvent=observer.getLastEvent();
Assert.assertNotNull(lastEvent);
Assert.assertEquals(Resource.Type.Service,lastEvent.getResourceType());
Assert.assertEquals(ResourceProviderEvent.Type.Delete,lastEvent.getType());
Assert.assertEquals(predicate,lastEvent.getPredicate());
Assert.assertNull(lastEvent.getRequest());
verify(managementController,clusters,cluster,service,component1.Component,component2.Component,component3.Component);
}
Class: org.apache.ambari.server.controller.internal.SettingResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCreateResource_admin() throws Exception {
setupAuthenticationForAdmin();
SettingEntity entity=newEntity("motd");
Capture entityCapture=Capture.newInstance();
Request request=createRequest(entity);
expect(dao.findByName(entity.getName())).andReturn(null);
dao.create(capture(entityCapture));
mockControl.replay();
RequestStatus response=resourceProvider.createResources(request);
assertEquals(RequestStatus.Status.Complete,response.getStatus());
Set associatedResources=response.getAssociatedResources();
assertEquals(1,associatedResources.size());
SettingEntity capturedEntity=entityCapture.getValue();
assertEquals(entity.getName(),capturedEntity.getName());
assertEquals(entity.getContent(),capturedEntity.getContent());
assertEquals(entity.getSettingType(),capturedEntity.getSettingType());
assertEquals(AuthorizationHelper.getAuthenticatedName(),capturedEntity.getUpdatedBy());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources_collection_clusterUser() throws Exception {
setupAuthenticationForClusterUser();
SettingEntity entity1=newEntity("motd");
SettingEntity entity2=newEntity("ldap");
Request request=PropertyHelper.getReadRequest(SETTING_NAME_PROPERTY_ID,SETTING_CONTENT_PROPERTY_ID,SETTING_SETTING_TYPE_PROPERTY_ID,SETTING_UPDATED_BY_PROPERTY_ID,SETTING_UPDATE_TIMESTAMP_PROPERTY_ID);
expect(dao.findAll()).andReturn(Lists.newArrayList(entity1,entity2));
mockControl.replay();
Set response=resourceProvider.getResources(request,null);
assertEquals(2,response.size());
Map resourceMap=new HashMap<>();
Iterator resourceIterator=response.iterator();
Resource nextResource=resourceIterator.next();
resourceMap.put(nextResource.getPropertyValue(SETTING_NAME_PROPERTY_ID),nextResource);
nextResource=resourceIterator.next();
resourceMap.put(nextResource.getPropertyValue(SETTING_NAME_PROPERTY_ID),nextResource);
assertEqualsEntityAndResource(entity1,resourceMap.get(entity1.getName()));
assertEqualsEntityAndResource(entity2,resourceMap.get(entity2.getName()));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testUpdateResources_admin() throws Exception {
setupAuthenticationForAdmin();
String name="motd";
SettingEntity oldEntity=newEntity(name);
SettingEntity updatedEntity=oldEntity.clone();
updatedEntity.setContent("{text}");
updatedEntity.setSettingType("new-type");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.begin().property(SETTING_NAME_PROPERTY_ID).equals(name).end().toPredicate();
Capture capture=Capture.newInstance();
expect(dao.findByName(name)).andReturn(oldEntity);
expect(dao.merge(capture(capture))).andReturn(updatedEntity);
mockControl.replay();
RequestStatus response=resourceProvider.updateResources(updateRequest(updatedEntity),predicate);
SettingEntity capturedEntity=capture.getValue();
assertEquals(RequestStatus.Status.Complete,response.getStatus());
assertEquals(updatedEntity.getId(),capturedEntity.getId());
assertEquals(updatedEntity.getName(),capturedEntity.getName());
assertEquals(updatedEntity.getSettingType(),capturedEntity.getSettingType());
assertEquals(updatedEntity.getContent(),capturedEntity.getContent());
assertEquals(AuthorizationHelper.getAuthenticatedName(),capturedEntity.getUpdatedBy());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetResources_collection_admin() throws Exception {
setupAuthenticationForAdmin();
SettingEntity entity1=newEntity("motd");
SettingEntity entity2=newEntity("ldap");
Request request=PropertyHelper.getReadRequest(SETTING_NAME_PROPERTY_ID,SETTING_CONTENT_PROPERTY_ID,SETTING_SETTING_TYPE_PROPERTY_ID,SETTING_UPDATED_BY_PROPERTY_ID,SETTING_UPDATE_TIMESTAMP_PROPERTY_ID);
expect(dao.findAll()).andReturn(Lists.newArrayList(entity1,entity2));
mockControl.replay();
Set response=resourceProvider.getResources(request,null);
assertEquals(2,response.size());
Map resourceMap=new HashMap<>();
Iterator resourceIterator=response.iterator();
Resource nextResource=resourceIterator.next();
resourceMap.put(nextResource.getPropertyValue(SETTING_NAME_PROPERTY_ID),nextResource);
nextResource=resourceIterator.next();
resourceMap.put(nextResource.getPropertyValue(SETTING_NAME_PROPERTY_ID),nextResource);
assertEqualsEntityAndResource(entity1,resourceMap.get(entity1.getName()));
assertEqualsEntityAndResource(entity2,resourceMap.get(entity2.getName()));
}
Class: org.apache.ambari.server.controller.internal.SimplifyingPredicateVisitorTest InternalCallVerifier EqualityVerifier
@Test public void testVisit(){
ResourceProvider provider=createStrictMock(ResourceProvider.class);
Capture> propertiesCapture=new Capture>();
SimplifyingPredicateVisitor visitor=new SimplifyingPredicateVisitor(provider);
expect(provider.checkPropertyIds(capture(propertiesCapture))).andReturn(Collections.emptySet()).anyTimes();
replay(provider);
PredicateHelper.visit(PREDICATE_1,visitor);
List simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(1,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_1,simplifiedPredicates.get(0));
Set setProps=propertiesCapture.getValue();
assertEquals(1,setProps.size());
assertEquals(PROPERTY_A,setProps.iterator().next());
PredicateHelper.visit(PREDICATE_3,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(1,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_3,simplifiedPredicates.get(0));
PredicateHelper.visit(PREDICATE_4,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(2,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_1,simplifiedPredicates.get(0));
Assert.assertEquals(PREDICATE_2,simplifiedPredicates.get(1));
PredicateHelper.visit(PREDICATE_6,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(3,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_5,simplifiedPredicates.get(0));
Assert.assertEquals(PREDICATE_1,simplifiedPredicates.get(1));
Assert.assertEquals(PREDICATE_2,simplifiedPredicates.get(2));
PredicateHelper.visit(PREDICATE_8,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(4,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_5,simplifiedPredicates.get(0));
Assert.assertEquals(PREDICATE_1,simplifiedPredicates.get(1));
Assert.assertEquals(PREDICATE_2,simplifiedPredicates.get(2));
Assert.assertEquals(PREDICATE_7,simplifiedPredicates.get(3));
PredicateHelper.visit(PREDICATE_9,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(4,simplifiedPredicates.size());
PredicateHelper.visit(PREDICATE_11,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(4,simplifiedPredicates.size());
PredicateHelper.visit(PREDICATE_16,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(1,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_16,simplifiedPredicates.get(0));
verify(provider);
reset(provider);
expect(provider.checkPropertyIds(capture(propertiesCapture))).andReturn(Collections.emptySet());
expect(provider.checkPropertyIds(capture(propertiesCapture))).andReturn(Collections.singleton(PROPERTY_D));
replay(provider);
PredicateHelper.visit(PREDICATE_13,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(1,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_1,simplifiedPredicates.get(0));
verify(provider);
reset(provider);
expect(provider.checkPropertyIds(capture(propertiesCapture))).andReturn(Collections.emptySet()).anyTimes();
replay(provider);
PredicateHelper.visit(PREDICATE_15,visitor);
simplifiedPredicates=visitor.getSimplifiedPredicates();
Assert.assertEquals(1,simplifiedPredicates.size());
Assert.assertEquals(PREDICATE_1,simplifiedPredicates.get(0));
verify(provider);
}
Class: org.apache.ambari.server.controller.internal.StackAdvisorResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCalculateConfigurations() throws Exception {
Map keyPropertyIds=Collections.emptyMap();
Set propertyIds=Collections.emptySet();
AmbariManagementController ambariManagementController=mock(AmbariManagementController.class);
RecommendationResourceProvider provider=new RecommendationResourceProvider(propertyIds,keyPropertyIds,ambariManagementController);
Request request=mock(Request.class);
Set> propertiesSet=new HashSet>();
Map propertiesMap=new HashMap();
propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + "site/properties/string_prop","string");
List array=new ArrayList();
array.add("array1");
array.add("array2");
propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + "site/properties/array_prop",array);
propertiesSet.add(propertiesMap);
doReturn(propertiesSet).when(request).getProperties();
Map>> calculatedConfigurations=provider.calculateConfigurations(request);
assertNotNull(calculatedConfigurations);
assertEquals(1,calculatedConfigurations.size());
Map> site=calculatedConfigurations.get("site");
assertNotNull(site);
assertEquals(1,site.size());
Map properties=site.get("properties");
assertNotNull(properties);
assertEquals(2,properties.size());
assertEquals("string",properties.get("string_prop"));
assertEquals("[array1, array2]",properties.get("array_prop"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCalculateConfigurationsWithNullPropertyValues() throws Exception {
Map keyPropertyIds=Collections.emptyMap();
Set propertyIds=Collections.emptySet();
AmbariManagementController ambariManagementController=mock(AmbariManagementController.class);
RecommendationResourceProvider provider=new RecommendationResourceProvider(propertyIds,keyPropertyIds,ambariManagementController);
Request request=mock(Request.class);
Set> propertiesSet=new HashSet>();
Map propertiesMap=new HashMap();
propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + "site/properties/string_prop",null);
List array=new ArrayList();
array.add("array1");
array.add("array2");
propertiesMap.put(CONFIGURATIONS_PROPERTY_ID + "site/properties/array_prop",array);
propertiesSet.add(propertiesMap);
doReturn(propertiesSet).when(request).getProperties();
Map>> calculatedConfigurations=provider.calculateConfigurations(request);
assertNotNull(calculatedConfigurations);
assertEquals(1,calculatedConfigurations.size());
Map> site=calculatedConfigurations.get("site");
assertNotNull(site);
assertEquals(1,site.size());
Map properties=site.get("properties");
assertNotNull(properties);
assertEquals("[array1, array2]",properties.get("array_prop"));
assertFalse(properties.containsKey("string_prop"));
}
Class: org.apache.ambari.server.controller.internal.StackArtifactResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test @SuppressWarnings("unchecked") public void testGetWidgetDescriptorForService() throws Exception {
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
expect(managementController.getAmbariMetaInfo()).andReturn(metaInfo).anyTimes();
replay(managementController);
StackArtifactResourceProvider resourceProvider=getStackArtifactResourceProvider(managementController);
Set propertyIds=new HashSet();
propertyIds.add(ARTIFACT_NAME_PROPERTY_ID);
propertyIds.add(STACK_NAME_PROPERTY_ID);
propertyIds.add(STACK_VERSION_PROPERTY_ID);
propertyIds.add(STACK_SERVICE_NAME_PROPERTY_ID);
propertyIds.add(ARTIFACT_DATA_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property(ARTIFACT_NAME_PROPERTY_ID).equals("widgets_descriptor").and().property(STACK_NAME_PROPERTY_ID).equals("OTHER").and().property(STACK_VERSION_PROPERTY_ID).equals("2.0").and().property(STACK_SERVICE_NAME_PROPERTY_ID).equals("HBASE").toPredicate();
Set resources=resourceProvider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Map> propertyMap=resource.getPropertiesMap();
Map descriptor=propertyMap.get(ARTIFACT_DATA_PROPERTY_ID);
Assert.assertNotNull(descriptor);
Assert.assertEquals(1,((List)descriptor.get("layouts")).size());
WidgetLayout layout=((List)descriptor.get("layouts")).iterator().next();
Assert.assertEquals("default_hbase_layout",layout.getLayoutName());
Assert.assertEquals("HBASE_SUMMARY",layout.getSectionName());
Assert.assertEquals(5,layout.getWidgetLayoutInfoList().size());
verify(managementController);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetMetricsDescriptorForService() throws Exception {
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
expect(managementController.getAmbariMetaInfo()).andReturn(metaInfo).anyTimes();
replay(managementController);
StackArtifactResourceProvider resourceProvider=getStackArtifactResourceProvider(managementController);
Set propertyIds=new HashSet();
propertyIds.add(ARTIFACT_NAME_PROPERTY_ID);
propertyIds.add(STACK_NAME_PROPERTY_ID);
propertyIds.add(STACK_VERSION_PROPERTY_ID);
propertyIds.add(STACK_SERVICE_NAME_PROPERTY_ID);
propertyIds.add(ARTIFACT_DATA_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property(ARTIFACT_NAME_PROPERTY_ID).equals("metrics_descriptor").and().property(STACK_NAME_PROPERTY_ID).equals("OTHER").and().property(STACK_VERSION_PROPERTY_ID).equals("1.0").and().property(STACK_SERVICE_NAME_PROPERTY_ID).equals("HDFS").toPredicate();
Set resources=resourceProvider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Map> propertyMap=resource.getPropertiesMap();
Map descriptor=propertyMap.get(ARTIFACT_DATA_PROPERTY_ID + "/HDFS/DATANODE");
Assert.assertNotNull(descriptor);
Assert.assertEquals(1,((ArrayList)descriptor.get("Component")).size());
MetricDefinition md=(MetricDefinition)((ArrayList)descriptor.get("Component")).iterator().next();
Metric m1=md.getMetrics().get("metrics/dfs/datanode/heartBeats_avg_time");
Metric m2=md.getMetrics().get("metrics/rpc/closeRegion_num_ops");
Assert.assertEquals(326,md.getMetrics().size());
Assert.assertTrue(m1.isAmsHostMetric());
Assert.assertEquals("unitless",m1.getUnit());
Assert.assertFalse(m2.isAmsHostMetric());
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.StackConfigurationDependencyResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.StackConfigurationDependency;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new StackConfigurationDependencyResponse("depName","depType"));
expect(managementController.getStackConfigurationDependencies(AbstractResourceProviderTest.Matcher.getStackConfigurationDependencyRequestSet(null,null,null,null,null))).andReturn(allResponse).times(1);
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(StackConfigurationDependencyResourceProvider.STACK_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationDependencyResourceProvider.STACK_VERSION_PROPERTY_ID);
propertyIds.add(StackConfigurationDependencyResourceProvider.SERVICE_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationDependencyResourceProvider.PROPERTY_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationDependencyResourceProvider.DEPENDENCY_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationDependencyResourceProvider.DEPENDENCY_TYPE_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String dependencyName=(String)resource.getPropertyValue(StackConfigurationDependencyResourceProvider.DEPENDENCY_NAME_PROPERTY_ID);
String dependencyType=(String)resource.getPropertyValue(StackConfigurationDependencyResourceProvider.DEPENDENCY_TYPE_PROPERTY_ID);
Assert.assertEquals("depName",dependencyName);
Assert.assertEquals("depType",dependencyType);
}
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.StackConfigurationResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_noFinal() throws Exception {
Map attributes=new HashMap();
Resource.Type type=Resource.Type.StackConfiguration;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new StackConfigurationResponse(PROPERTY_NAME,PROPERTY_VALUE,PROPERTY_DESC,TYPE,attributes));
expect(managementController.getStackConfigurations(AbstractResourceProviderTest.Matcher.getStackConfigurationRequestSet(null,null,null,null))).andReturn(allResponse).times(1);
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(StackConfigurationResourceProvider.STACK_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.STACK_VERSION_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.SERVICE_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String propertyName=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
String propertyValue=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
String propertyDesc=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
String propertyType=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
String propertyIsFinal=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
Assert.assertEquals(PROPERTY_NAME,propertyName);
Assert.assertEquals(PROPERTY_VALUE,propertyValue);
Assert.assertEquals(PROPERTY_DESC,propertyDesc);
Assert.assertEquals(TYPE,propertyType);
Assert.assertEquals("false",propertyIsFinal);
}
verify(managementController);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Map attributes=new HashMap();
attributes.put("final","true");
Resource.Type type=Resource.Type.StackConfiguration;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new StackConfigurationResponse(PROPERTY_NAME,PROPERTY_VALUE,PROPERTY_DESC,TYPE,attributes));
expect(managementController.getStackConfigurations(AbstractResourceProviderTest.Matcher.getStackConfigurationRequestSet(null,null,null,null))).andReturn(allResponse).times(1);
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(StackConfigurationResourceProvider.STACK_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.STACK_VERSION_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.SERVICE_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
propertyIds.add(StackConfigurationResourceProvider.PROPERTY_DEPENDS_ON_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String propertyName=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
String propertyValue=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
String propertyDesc=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
String propertyType=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
String propertyIsFinal=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
String propertyDependencies=(String)resource.getPropertyValue(StackConfigurationResourceProvider.PROPERTY_DEPENDS_ON_PROPERTY_ID);
Assert.assertEquals(PROPERTY_NAME,propertyName);
Assert.assertEquals(PROPERTY_VALUE,propertyValue);
Assert.assertEquals(PROPERTY_DESC,propertyDesc);
Assert.assertEquals(TYPE,propertyType);
Assert.assertEquals("true",propertyIsFinal);
Assert.assertNull(propertyDependencies);
}
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.StackDependencyResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws SystemException, UnsupportedPropertyException, NoSuchParentResourceException, NoSuchResourceException, AmbariException {
Request request=createNiceMock(Request.class);
DependencyInfo dependencyInfo=new DependencyInfo();
dependencyInfo.setName("service_name/comp_name");
dependencyInfo.setScope("cluster");
Predicate namePredicate=new EqualsPredicate(StackDependencyResourceProvider.COMPONENT_NAME_ID,"comp_name");
Predicate depServicePredicate=new EqualsPredicate(StackDependencyResourceProvider.DEPENDENT_SERVICE_NAME_ID,"dep_service_name");
Predicate depCompPredicate=new EqualsPredicate(StackDependencyResourceProvider.DEPENDENT_COMPONENT_NAME_ID,"dep_comp_name");
Predicate stackNamePredicate=new EqualsPredicate(StackDependencyResourceProvider.STACK_NAME_ID,"stack_name");
Predicate stackVersionPredicate=new EqualsPredicate(StackDependencyResourceProvider.STACK_VERSION_ID,"stack_version");
Predicate andPredicate=new AndPredicate(namePredicate,depServicePredicate,depCompPredicate,stackNamePredicate,stackVersionPredicate);
expect(metaInfo.getComponentDependency("stack_name","stack_version","dep_service_name","dep_comp_name","comp_name")).andReturn(dependencyInfo);
replay(metaInfo,request);
ResourceProvider provider=createProvider();
Set resources=provider.getResources(request,andPredicate);
verify(metaInfo);
assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
assertEquals("cluster",resource.getPropertyValue(StackDependencyResourceProvider.SCOPE_ID));
assertEquals("comp_name",resource.getPropertyValue(StackDependencyResourceProvider.COMPONENT_NAME_ID));
assertEquals("service_name",resource.getPropertyValue(StackDependencyResourceProvider.SERVICE_NAME_ID));
assertEquals("dep_service_name",resource.getPropertyValue(StackDependencyResourceProvider.DEPENDENT_SERVICE_NAME_ID));
assertEquals("dep_comp_name",resource.getPropertyValue(StackDependencyResourceProvider.DEPENDENT_COMPONENT_NAME_ID));
assertEquals("stack_name",resource.getPropertyValue(StackDependencyResourceProvider.STACK_NAME_ID));
assertEquals("stack_version",resource.getPropertyValue(StackDependencyResourceProvider.STACK_VERSION_ID));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_Query() throws SystemException, UnsupportedPropertyException, NoSuchParentResourceException, NoSuchResourceException, AmbariException {
Request request=createNiceMock(Request.class);
DependencyInfo dependencyInfo=new DependencyInfo();
dependencyInfo.setName("service_name/comp_name");
dependencyInfo.setScope("cluster");
Predicate namePredicate=new EqualsPredicate(StackDependencyResourceProvider.COMPONENT_NAME_ID,"comp_name");
Predicate name2Predicate=new EqualsPredicate(StackDependencyResourceProvider.COMPONENT_NAME_ID,"comp_name2");
Predicate depServicePredicate=new EqualsPredicate(StackDependencyResourceProvider.DEPENDENT_SERVICE_NAME_ID,"dep_service_name");
Predicate depCompPredicate=new EqualsPredicate(StackDependencyResourceProvider.DEPENDENT_COMPONENT_NAME_ID,"dep_comp_name");
Predicate stackNamePredicate=new EqualsPredicate(StackDependencyResourceProvider.STACK_NAME_ID,"stack_name");
Predicate stackVersionPredicate=new EqualsPredicate(StackDependencyResourceProvider.STACK_VERSION_ID,"stack_version");
Predicate andPredicate1=new AndPredicate(namePredicate,depServicePredicate,depCompPredicate,stackNamePredicate,stackVersionPredicate);
Predicate andPredicate2=new AndPredicate(name2Predicate,depServicePredicate,depCompPredicate,stackNamePredicate,stackVersionPredicate);
Predicate orPredicate=new OrPredicate(andPredicate1,andPredicate2);
expect(metaInfo.getComponentDependency("stack_name","stack_version","dep_service_name","dep_comp_name","comp_name")).andReturn(dependencyInfo);
expect(metaInfo.getComponentDependency("stack_name","stack_version","dep_service_name","dep_comp_name","comp_name2")).andThrow(new StackAccessException("test"));
replay(metaInfo,request);
ResourceProvider provider=createProvider();
Set resources=provider.getResources(request,orPredicate);
verify(metaInfo);
assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
assertEquals("cluster",resource.getPropertyValue(StackDependencyResourceProvider.SCOPE_ID));
assertEquals("comp_name",resource.getPropertyValue(StackDependencyResourceProvider.COMPONENT_NAME_ID));
assertEquals("service_name",resource.getPropertyValue(StackDependencyResourceProvider.SERVICE_NAME_ID));
assertEquals("dep_service_name",resource.getPropertyValue(StackDependencyResourceProvider.DEPENDENT_SERVICE_NAME_ID));
assertEquals("dep_comp_name",resource.getPropertyValue(StackDependencyResourceProvider.DEPENDENT_COMPONENT_NAME_ID));
assertEquals("stack_name",resource.getPropertyValue(StackDependencyResourceProvider.STACK_NAME_ID));
assertEquals("stack_version",resource.getPropertyValue(StackDependencyResourceProvider.STACK_VERSION_ID));
}
Class: org.apache.ambari.server.controller.internal.StackLevelConfigurationResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_noFinal() throws Exception {
Map attributes=new HashMap();
Resource.Type type=Resource.Type.StackLevelConfiguration;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new StackConfigurationResponse(PROPERTY_NAME,PROPERTY_VALUE,PROPERTY_DESC,TYPE,attributes));
expect(managementController.getStackLevelConfigurations(AbstractResourceProviderTest.Matcher.getStackLevelConfigurationRequestSet(null,null,null))).andReturn(allResponse).times(1);
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(StackLevelConfigurationResourceProvider.STACK_NAME_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.STACK_VERSION_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String propertyName=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
String propertyValue=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
String propertyDesc=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
String propertyType=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
String propertyIsFinal=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
Assert.assertEquals(PROPERTY_NAME,propertyName);
Assert.assertEquals(PROPERTY_VALUE,propertyValue);
Assert.assertEquals(PROPERTY_DESC,propertyDesc);
Assert.assertEquals(TYPE,propertyType);
Assert.assertEquals("false",propertyIsFinal);
}
verify(managementController);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
Map attributes=new HashMap();
attributes.put("final","true");
Resource.Type type=Resource.Type.StackLevelConfiguration;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new StackConfigurationResponse(PROPERTY_NAME,PROPERTY_VALUE,PROPERTY_DESC,TYPE,attributes));
expect(managementController.getStackLevelConfigurations(AbstractResourceProviderTest.Matcher.getStackLevelConfigurationRequestSet(null,null,null))).andReturn(allResponse).times(1);
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(StackLevelConfigurationResourceProvider.STACK_NAME_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.STACK_VERSION_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
propertyIds.add(StackLevelConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(allResponse.size(),resources.size());
for ( Resource resource : resources) {
String propertyName=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_NAME_PROPERTY_ID);
String propertyValue=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_VALUE_PROPERTY_ID);
String propertyDesc=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_DESCRIPTION_PROPERTY_ID);
String propertyType=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_TYPE_PROPERTY_ID);
String propertyIsFinal=(String)resource.getPropertyValue(StackLevelConfigurationResourceProvider.PROPERTY_FINAL_PROPERTY_ID);
Assert.assertEquals(PROPERTY_NAME,propertyName);
Assert.assertEquals(PROPERTY_VALUE,propertyValue);
Assert.assertEquals(PROPERTY_DESC,propertyDesc);
Assert.assertEquals(TYPE,propertyType);
Assert.assertEquals("true",propertyIsFinal);
}
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.StackResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.Stack;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
Set allResponse=new HashSet();
allResponse.add(new StackResponse("Stack1"));
allResponse.add(new StackResponse("Stack2"));
expect(managementController.getStacks(EasyMock.>anyObject())).andReturn(allResponse).once();
replay(managementController);
ResourceProvider provider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set propertyIds=new HashSet();
propertyIds.add(StackResourceProvider.STACK_NAME_PROPERTY_ID);
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,null);
Assert.assertEquals(2,resources.size());
Set stackNames=new HashSet();
stackNames.add("Stack1");
stackNames.add("Stack2");
for ( Resource resource : resources) {
String stackName=(String)resource.getPropertyValue(StackResourceProvider.STACK_NAME_PROPERTY_ID);
Assert.assertTrue(stackNames.contains(stackName));
}
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.StackServiceResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetServiceProperties() throws Exception {
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
Resource.Type type=Resource.Type.StackService;
StackServiceResponse stackServiceResponse=createNiceMock(StackServiceResponse.class);
expect(stackServiceResponse.getServiceProperties()).andReturn(TEST_SERVICE_PROPERTIES);
expect(managementController.getStackServices(anyObject(Set.class))).andReturn(ImmutableSet.of(stackServiceResponse));
replay(managementController,stackServiceResponse);
Request request=PropertyHelper.getReadRequest(SERVICE_PROPERTIES_PROPERTY_ID);
ResourceProvider stackServiceResourceProvider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=stackServiceResourceProvider.getResources(request,null);
Resource expected=new ResourceImpl(type);
BaseProvider.setResourceProperty(expected,SERVICE_PROPERTIES_PROPERTY_ID,TEST_SERVICE_PROPERTIES,ImmutableSet.of(SERVICE_PROPERTIES_PROPERTY_ID));
assertEquals(ImmutableSet.of(expected),resources);
verify(managementController,stackServiceResponse);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetVisibilityServiceProperties() throws Exception {
AmbariManagementController managementController=createNiceMock(AmbariManagementController.class);
Resource.Type type=Resource.Type.StackService;
ServiceInfo serviceInfo=new ServiceInfo();
serviceInfo.setServicePropertyList(TEST_SERVICE_PROPERTY_LIST);
StackServiceResponse stackServiceResponse=new StackServiceResponse(serviceInfo);
expect(managementController.getStackServices(anyObject(Set.class))).andReturn(ImmutableSet.of(stackServiceResponse));
replay(managementController);
Request request=PropertyHelper.getReadRequest(SERVICE_PROPERTIES_PROPERTY_ID);
ResourceProvider stackServiceResourceProvider=AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
Set resources=stackServiceResourceProvider.getResources(request,null);
Map expectedServiceProperties=ImmutableMap.builder().putAll(TEST_SERVICE_PROPERTIES).put(ServiceInfo.DEFAULT_SERVICE_INSTALLABLE_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MANAGED_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MONITORED_PROPERTY).build();
Resource expected=new ResourceImpl(type);
BaseProvider.setResourceProperty(expected,SERVICE_PROPERTIES_PROPERTY_ID,expectedServiceProperties,ImmutableSet.of(SERVICE_PROPERTIES_PROPERTY_ID));
assertEquals(ImmutableSet.of(expected),resources);
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.StackTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRequiredProperties_serviceAndPropertyType() throws Exception {
AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
AmbariMetaInfo metaInfo=createNiceMock(AmbariMetaInfo.class);
Capture> stackServiceRequestCapture=new Capture>();
StackServiceResponse stackServiceResponse=createNiceMock(StackServiceResponse.class);
Capture> stackComponentRequestCapture=new Capture>();
StackServiceComponentResponse stackComponentResponse=createNiceMock(StackServiceComponentResponse.class);
Capture> stackConfigurationRequestCapture=new Capture>();
Capture> stackLevelConfigurationRequestCapture=new Capture>();
StackConfigurationResponse stackConfigurationResponse=EasyMock.createNiceMock(StackConfigurationResponse.class);
StackConfigurationResponse stackConfigurationResponse2=EasyMock.createNiceMock(StackConfigurationResponse.class);
expect(controller.getStackServices(capture(stackServiceRequestCapture))).andReturn(Collections.singleton(stackServiceResponse)).anyTimes();
expect(controller.getAmbariMetaInfo()).andReturn(metaInfo).anyTimes();
expect(stackServiceResponse.getServiceName()).andReturn("service1").anyTimes();
expect(stackServiceResponse.getExcludedConfigTypes()).andReturn(Collections.emptySet());
expect(controller.getStackComponents(capture(stackComponentRequestCapture))).andReturn(Collections.singleton(stackComponentResponse)).anyTimes();
expect(stackComponentResponse.getComponentName()).andReturn("component1").anyTimes();
expect(stackComponentResponse.getComponentCategory()).andReturn("test-site.xml").anyTimes();
expect(controller.getStackConfigurations(capture(stackConfigurationRequestCapture))).andReturn(new HashSet(Arrays.asList(stackConfigurationResponse,stackConfigurationResponse2))).anyTimes();
expect(controller.getStackLevelConfigurations(capture(stackLevelConfigurationRequestCapture))).andReturn(Collections.emptySet()).anyTimes();
expect(stackConfigurationResponse.getPropertyName()).andReturn("prop1").anyTimes();
expect(stackConfigurationResponse.getPropertyValue()).andReturn(null).anyTimes();
expect(stackConfigurationResponse.getType()).andReturn("test-site.xml").anyTimes();
expect(stackConfigurationResponse.getPropertyType()).andReturn(Collections.singleton(PropertyInfo.PropertyType.PASSWORD)).anyTimes();
expect(stackConfigurationResponse.getPropertyAttributes()).andReturn(Collections.emptyMap()).anyTimes();
expect(stackConfigurationResponse.isRequired()).andReturn(true).anyTimes();
expect(stackConfigurationResponse2.getPropertyName()).andReturn("prop2").anyTimes();
expect(stackConfigurationResponse2.getPropertyValue()).andReturn(null).anyTimes();
expect(stackConfigurationResponse2.getType()).andReturn("test-site.xml").anyTimes();
expect(stackConfigurationResponse2.getPropertyType()).andReturn(Collections.singleton(PropertyInfo.PropertyType.USER)).anyTimes();
expect(stackConfigurationResponse2.getPropertyAttributes()).andReturn(Collections.emptyMap()).anyTimes();
expect(stackConfigurationResponse2.isRequired()).andReturn(true).anyTimes();
expect(metaInfo.getComponentDependencies("test","1.0","service1","component1")).andReturn(Collections.emptyList()).anyTimes();
replay(controller,stackServiceResponse,stackComponentResponse,stackConfigurationResponse,stackConfigurationResponse2,metaInfo);
Stack stack=new Stack("test","1.0",controller);
Collection requiredPasswordProperties=stack.getRequiredConfigurationProperties("service1",PropertyInfo.PropertyType.PASSWORD);
assertEquals(1,requiredPasswordProperties.size());
Stack.ConfigProperty requiredPasswordConfigProperty=requiredPasswordProperties.iterator().next();
assertEquals("test-site",requiredPasswordConfigProperty.getType());
assertEquals("prop1",requiredPasswordConfigProperty.getName());
assertTrue(requiredPasswordConfigProperty.getPropertyTypes().contains(PropertyInfo.PropertyType.PASSWORD));
StackServiceRequest stackServiceRequest=stackServiceRequestCapture.getValue().iterator().next();
assertEquals("test",stackServiceRequest.getStackName());
assertEquals("1.0",stackServiceRequest.getStackVersion());
StackServiceComponentRequest stackComponentRequest=stackComponentRequestCapture.getValue().iterator().next();
assertEquals("service1",stackComponentRequest.getServiceName());
assertEquals("test",stackComponentRequest.getStackName());
assertEquals("1.0",stackComponentRequest.getStackVersion());
assertNull(stackComponentRequest.getComponentName());
}
InternalCallVerifier IdentityVerifier
@Test public void testConfigPropertyReadsInDependencies() throws Exception {
EasyMockSupport mockSupport=new EasyMockSupport();
Set setOfDependencyInfo=new HashSet();
StackConfigurationResponse mockResponse=mockSupport.createMock(StackConfigurationResponse.class);
expect(mockResponse.getPropertyName()).andReturn("test-property-one");
expect(mockResponse.getPropertyValue()).andReturn("test-value-one");
expect(mockResponse.getPropertyAttributes()).andReturn(Collections.emptyMap());
expect(mockResponse.getPropertyType()).andReturn(Collections.emptySet());
expect(mockResponse.getType()).andReturn("test-type-one");
expect(mockResponse.getDependsOnProperties()).andReturn(setOfDependencyInfo);
mockSupport.replayAll();
Stack.ConfigProperty configProperty=new Stack.ConfigProperty(mockResponse);
assertSame("DependencyInfo was not properly parsed from the stack response object",setOfDependencyInfo,configProperty.getDependsOnProperties());
mockSupport.verifyAll();
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testTestXmlExtensionStrippedOff() throws Exception {
AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
AmbariMetaInfo metaInfo=createNiceMock(AmbariMetaInfo.class);
Capture> stackServiceRequestCapture=new Capture>();
StackServiceResponse stackServiceResponse=createNiceMock(StackServiceResponse.class);
Capture> stackComponentRequestCapture=new Capture>();
StackServiceComponentResponse stackComponentResponse=createNiceMock(StackServiceComponentResponse.class);
Capture> stackConfigurationRequestCapture=new Capture>();
Capture> stackLevelConfigurationRequestCapture=new Capture>();
StackConfigurationResponse stackConfigurationResponse=EasyMock.createNiceMock(StackConfigurationResponse.class);
expect(controller.getStackServices(capture(stackServiceRequestCapture))).andReturn(Collections.singleton(stackServiceResponse)).anyTimes();
expect(controller.getAmbariMetaInfo()).andReturn(metaInfo).anyTimes();
expect(stackServiceResponse.getServiceName()).andReturn("service1").anyTimes();
expect(stackServiceResponse.getExcludedConfigTypes()).andReturn(Collections.emptySet());
expect(controller.getStackComponents(capture(stackComponentRequestCapture))).andReturn(Collections.singleton(stackComponentResponse)).anyTimes();
expect(stackComponentResponse.getComponentName()).andReturn("component1").anyTimes();
expect(stackComponentResponse.getComponentCategory()).andReturn("test-site.xml").anyTimes();
expect(controller.getStackConfigurations(capture(stackConfigurationRequestCapture))).andReturn(Collections.singleton(stackConfigurationResponse)).anyTimes();
expect(controller.getStackLevelConfigurations(capture(stackLevelConfigurationRequestCapture))).andReturn(Collections.emptySet()).anyTimes();
expect(stackConfigurationResponse.getPropertyName()).andReturn("prop1").anyTimes();
expect(stackConfigurationResponse.getPropertyValue()).andReturn("prop1Val").anyTimes();
expect(stackConfigurationResponse.getType()).andReturn("test-site.xml").anyTimes();
expect(stackConfigurationResponse.getPropertyType()).andReturn(Collections.emptySet()).anyTimes();
expect(stackConfigurationResponse.getPropertyAttributes()).andReturn(Collections.emptyMap()).anyTimes();
expect(stackConfigurationResponse.isRequired()).andReturn(true).anyTimes();
expect(metaInfo.getComponentDependencies("test","1.0","service1","component1")).andReturn(Collections.emptyList()).anyTimes();
replay(controller,stackServiceResponse,stackComponentResponse,stackConfigurationResponse,metaInfo);
Stack stack=new Stack("test","1.0",controller);
Configuration configuration=stack.getConfiguration(Collections.singleton("service1"));
assertEquals("prop1Val",configuration.getProperties().get("test-site").get("prop1"));
assertEquals("test-site",stack.getRequiredConfigurationProperties("service1").iterator().next().getType());
StackServiceRequest stackServiceRequest=stackServiceRequestCapture.getValue().iterator().next();
assertEquals("test",stackServiceRequest.getStackName());
assertEquals("1.0",stackServiceRequest.getStackVersion());
StackServiceComponentRequest stackComponentRequest=stackComponentRequestCapture.getValue().iterator().next();
assertEquals("service1",stackComponentRequest.getServiceName());
assertEquals("test",stackComponentRequest.getStackName());
assertEquals("1.0",stackComponentRequest.getStackVersion());
assertNull(stackComponentRequest.getComponentName());
}
Class: org.apache.ambari.server.controller.internal.StageResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
StageResourceProvider provider=new StageResourceProvider(managementController);
Request request=createNiceMock(Request.class);
Predicate predicate=createNiceMock(Predicate.class);
List entities=getStageEntities(HostRoleStatus.COMPLETED);
expect(dao.findAll(request,predicate)).andReturn(entities);
expect(clusters.getClusterById(anyLong())).andReturn(cluster).anyTimes();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
replay(dao,clusters,cluster,request,predicate);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals(100.0,resource.getPropertyValue(StageResourceProvider.STAGE_PROGRESS_PERCENT));
Assert.assertEquals(HostRoleStatus.COMPLETED,resource.getPropertyValue(StageResourceProvider.STAGE_STATUS));
Assert.assertEquals(HostRoleStatus.COMPLETED,resource.getPropertyValue(StageResourceProvider.STAGE_DISPLAY_STATUS));
Assert.assertEquals(1000L,resource.getPropertyValue(StageResourceProvider.STAGE_START_TIME));
Assert.assertEquals(2500L,resource.getPropertyValue(StageResourceProvider.STAGE_END_TIME));
verify(dao,clusters,cluster);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests getting the display status of a stage which can differ from the final
* status.
* @throws Exception
*/
@Test public void testGetDisplayStatus() throws Exception {
EasyMock.reset(hrcDao);
expect(hrcDao.findAggregateCounts(EasyMock.anyObject(Long.class))).andReturn(new HashMap(){
{
put(0L,new HostRoleCommandStatusSummaryDTO(0,1000L,2500L,0,0,1,0,0,0,0,0,0,0,0,1));
}
}
).anyTimes();
replay(hrcDao);
StageResourceProvider provider=new StageResourceProvider(managementController);
Request request=createNiceMock(Request.class);
Predicate predicate=createNiceMock(Predicate.class);
List entities=getStageEntities(HostRoleStatus.SKIPPED_FAILED);
entities.get(0).setSkippable(true);
expect(dao.findAll(request,predicate)).andReturn(entities);
expect(clusters.getClusterById(anyLong())).andReturn(cluster).anyTimes();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
replay(dao,clusters,cluster,request,predicate);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals(HostRoleStatus.COMPLETED,resource.getPropertyValue(StageResourceProvider.STAGE_STATUS));
Assert.assertEquals(HostRoleStatus.SKIPPED_FAILED,resource.getPropertyValue(StageResourceProvider.STAGE_DISPLAY_STATUS));
verify(dao,clusters,cluster);
}
InternalCallVerifier BooleanVerifier EqualityVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testQueryForResources() throws Exception {
StageResourceProvider provider=new StageResourceProvider(managementController);
Request request=createNiceMock(Request.class);
Predicate predicate=createNiceMock(Predicate.class);
List entities=getStageEntities(HostRoleStatus.COMPLETED);
expect(dao.findAll(request,predicate)).andReturn(entities);
expect(clusters.getClusterById(anyLong())).andReturn(cluster).anyTimes();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
replay(dao,clusters,cluster,request,predicate);
QueryResponse response=provider.queryForResources(request,predicate);
Set resources=response.getResources();
Assert.assertEquals(1,resources.size());
Assert.assertFalse(response.isSortedResponse());
Assert.assertFalse(response.isPagedResponse());
Assert.assertEquals(1,response.getTotalResourceCount());
verify(dao,clusters,cluster);
}
Class: org.apache.ambari.server.controller.internal.TargetClusterResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
IvoryService service=createMock(IvoryService.class);
Set> propertySet=new HashSet>();
Map properties=new HashMap();
List targetClusterNames=new LinkedList();
targetClusterNames.add("Cluster1");
targetClusterNames.add("Cluster2");
targetClusterNames.add("Cluster3");
Cluster.Interface interface1=new Cluster.Interface("type","endpoint","version");
Cluster.Location location1=new Cluster.Location("name","path");
Cluster targetCluster1=new Cluster("Cluster1","Colo",Collections.singleton(interface1),Collections.singleton(location1),Collections.singletonMap("P1","V1"));
Cluster targetCluster2=new Cluster("Cluster2","Colo",Collections.singleton(interface1),Collections.singleton(location1),Collections.singletonMap("P1","V1"));
Cluster targetCluster3=new Cluster("Cluster3","Colo",Collections.singleton(interface1),Collections.singleton(location1),Collections.singletonMap("P1","V1"));
expect(service.getClusterNames()).andReturn(targetClusterNames);
expect(service.getCluster("Cluster1")).andReturn(targetCluster1);
expect(service.getCluster("Cluster2")).andReturn(targetCluster2);
expect(service.getCluster("Cluster3")).andReturn(targetCluster3);
replay(service);
propertySet.add(properties);
Request request=PropertyHelper.getCreateRequest(propertySet,Collections.emptyMap());
TargetClusterResourceProvider provider=new TargetClusterResourceProvider(service,PropertyHelper.getPropertyIds(Resource.Type.DRTargetCluster),PropertyHelper.getKeyPropertyIds(Resource.Type.DRTargetCluster));
Set resources=provider.getResources(request,null);
Assert.assertEquals(3,resources.size());
verify(service);
}
Class: org.apache.ambari.server.controller.internal.TaskAttemptResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testTaskAttemptFetcher() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set requestedIds=new HashSet();
requestedIds.add(TaskAttemptResourceProvider.TASK_ATTEMPT_ID_PROPERTY_ID);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(Resource.Type.TaskAttempt);
ResourceProvider provider=new TestTaskAttemptResourceProvider(requestedIds,keyPropertyIds);
Request request=PropertyHelper.getReadRequest(requestedIds);
Predicate predicate=new PredicateBuilder().property(TaskAttemptResourceProvider.TASK_ATTEMPT_ID_PROPERTY_ID).equals("taskattempt1").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String workflowId=(String)resource.getPropertyValue(TaskAttemptResourceProvider.TASK_ATTEMPT_ID_PROPERTY_ID);
Assert.assertEquals("taskattempt1",workflowId);
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set expected=new HashSet();
expected.add(createTaskAttemptResponse("Cluster100","workflow1","job1","taskAttempt1"));
expected.add(createTaskAttemptResponse("Cluster100","workflow2","job2","taskAttempt2"));
expected.add(createTaskAttemptResponse("Cluster100","workflow2","job2","taskAttempt3"));
Resource.Type type=Resource.Type.TaskAttempt;
Set propertyIds=PropertyHelper.getPropertyIds(type);
TaskAttemptFetcher taskAttemptFetcher=createMock(TaskAttemptFetcher.class);
expect(taskAttemptFetcher.fetchTaskAttemptDetails(propertyIds,null,null,"job2",null)).andReturn(expected).once();
replay(taskAttemptFetcher);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(type);
ResourceProvider provider=new TaskAttemptResourceProvider(propertyIds,keyPropertyIds,taskAttemptFetcher);
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property(TaskAttemptResourceProvider.TASK_ATTEMPT_JOB_ID_PROPERTY_ID).equals("job2").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(3,resources.size());
Set names=new HashSet();
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(TaskAttemptResourceProvider.TASK_ATTEMPT_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
names.add((String)resource.getPropertyValue(TaskAttemptResourceProvider.TASK_ATTEMPT_ID_PROPERTY_ID));
}
for ( Resource resource : expected) {
Assert.assertTrue(names.contains(resource.getPropertyValue(TaskAttemptResourceProvider.TASK_ATTEMPT_ID_PROPERTY_ID)));
}
verify(taskAttemptFetcher);
}
Class: org.apache.ambari.server.controller.internal.TaskResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResourcesForTopology() throws Exception {
Resource.Type type=Resource.Type.Task;
AmbariManagementController amc=createMock(AmbariManagementController.class);
HostRoleCommandDAO hostRoleCommandDAO=createMock(HostRoleCommandDAO.class);
TopologyManager topologyManager=createMock(TopologyManager.class);
HostDAO hostDAO=createMock(HostDAO.class);
ExecutionCommandDAO executionCommandDAO=createMock(ExecutionCommandDAO.class);
Injector m_injector=Guice.createInjector(new InMemoryDefaultTestModule());
TaskResourceProvider provider=(TaskResourceProvider)AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),amc);
m_injector.injectMembers(provider);
TaskResourceProvider.s_dao=hostRoleCommandDAO;
TaskResourceProvider.s_topologyManager=topologyManager;
List entities=new ArrayList<>();
List commands=new ArrayList<>();
HostRoleCommandEntity hostRoleCommandEntity=new HostRoleCommandEntity();
hostRoleCommandEntity.setRequestId(100L);
hostRoleCommandEntity.setTaskId(100L);
hostRoleCommandEntity.setStageId(100L);
hostRoleCommandEntity.setRole(Role.DATANODE);
hostRoleCommandEntity.setCustomCommandName("customCommandName");
hostRoleCommandEntity.setCommandDetail("commandDetail");
commands.add(new HostRoleCommand(hostRoleCommandEntity,hostDAO,executionCommandDAO));
expect(hostRoleCommandDAO.findAll(EasyMock.anyObject(Request.class),EasyMock.anyObject(Predicate.class))).andReturn(entities).once();
expect(topologyManager.getTasks(EasyMock.anyLong())).andReturn(commands).once();
replay(hostRoleCommandDAO,topologyManager);
Set propertyIds=new HashSet();
propertyIds.add(TaskResourceProvider.TASK_ID_PROPERTY_ID);
propertyIds.add(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID);
propertyIds.add(TaskResourceProvider.TASK_COMMAND_DET_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_ID_PROPERTY_ID).equals("100").and().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
long taskId=(Long)resource.getPropertyValue(TaskResourceProvider.TASK_ID_PROPERTY_ID);
Assert.assertEquals(100L,taskId);
Assert.assertEquals(null,resource.getPropertyValue(TaskResourceProvider.TASK_CUST_CMD_NAME_PROPERTY_ID));
Assert.assertEquals("commandDetail",resource.getPropertyValue(TaskResourceProvider.TASK_COMMAND_DET_PROPERTY_ID));
}
verify(hostRoleCommandDAO,topologyManager);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
Resource.Type type=Resource.Type.Task;
AmbariManagementController amc=createMock(AmbariManagementController.class);
HostRoleCommandDAO hostRoleCommandDAO=createMock(HostRoleCommandDAO.class);
Injector m_injector=Guice.createInjector(new InMemoryDefaultTestModule());
TaskResourceProvider provider=(TaskResourceProvider)AbstractControllerResourceProvider.getResourceProvider(type,PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),amc);
m_injector.injectMembers(provider);
TaskResourceProvider.s_dao=hostRoleCommandDAO;
List entities=new ArrayList<>();
HostRoleCommandEntity hostRoleCommandEntity=new HostRoleCommandEntity();
hostRoleCommandEntity.setRequestId(100L);
hostRoleCommandEntity.setTaskId(100L);
hostRoleCommandEntity.setStageId(100L);
hostRoleCommandEntity.setRole(Role.DATANODE);
hostRoleCommandEntity.setCustomCommandName("customCommandName");
hostRoleCommandEntity.setCommandDetail("commandDetail");
entities.add(hostRoleCommandEntity);
expect(hostRoleCommandDAO.findAll(EasyMock.anyObject(Request.class),EasyMock.anyObject(Predicate.class))).andReturn(entities).once();
replay(hostRoleCommandDAO);
Set propertyIds=new HashSet();
propertyIds.add(TaskResourceProvider.TASK_ID_PROPERTY_ID);
propertyIds.add(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID);
propertyIds.add(TaskResourceProvider.TASK_COMMAND_DET_PROPERTY_ID);
Predicate predicate=new PredicateBuilder().property(TaskResourceProvider.TASK_ID_PROPERTY_ID).equals("100").and().property(TaskResourceProvider.TASK_REQUEST_ID_PROPERTY_ID).equals("100").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
long taskId=(Long)resource.getPropertyValue(TaskResourceProvider.TASK_ID_PROPERTY_ID);
Assert.assertEquals(100L,taskId);
Assert.assertEquals(null,resource.getPropertyValue(TaskResourceProvider.TASK_CUST_CMD_NAME_PROPERTY_ID));
Assert.assertEquals("commandDetail",resource.getPropertyValue(TaskResourceProvider.TASK_COMMAND_DET_PROPERTY_ID));
}
verify(hostRoleCommandDAO);
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testInvalidStructuredOutput(){
Resource.Type type=Resource.Type.Task;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
TaskResourceProvider taskResourceProvider=new TaskResourceProvider(PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
replay(managementController);
Map,?> result=taskResourceProvider.parseStructuredOutput(null);
Assert.assertNull(result);
result=taskResourceProvider.parseStructuredOutput("This is some bad JSON");
Assert.assertNull(result);
verify(managementController);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testParseStructuredOutput(){
Resource.Type type=Resource.Type.Task;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
TaskResourceProvider taskResourceProvider=new TaskResourceProvider(PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
replay(managementController);
Map,?> result=taskResourceProvider.parseStructuredOutput("{\"a\":\"b\", \"c\": {\"d\":\"e\",\"f\": [\"g\",\"h\"],\"i\": {\"k\":\"l\"}}}");
assertEquals(result.size(),2);
Map,?> submap=(Map,?>)result.get("c");
assertEquals(submap.size(),3);
List sublist=(List)submap.get("f");
assertEquals(sublist.size(),2);
Map,?> subsubmap=(Map,?>)submap.get("i");
assertEquals(subsubmap.size(),1);
assertEquals(subsubmap.get("k"),"l");
result=taskResourceProvider.parseStructuredOutput("{\"a\": invalid JSON}");
assertNull(result);
result=taskResourceProvider.parseStructuredOutput("{\"a\": 5}");
assertEquals(result.get("a"),5);
verify(managementController);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testParseStructuredOutputForHostCheck(){
Resource.Type type=Resource.Type.Task;
AmbariManagementController managementController=createMock(AmbariManagementController.class);
TaskResourceProvider taskResourceProvider=new TaskResourceProvider(PropertyHelper.getPropertyIds(type),PropertyHelper.getKeyPropertyIds(type),managementController);
replay(managementController);
Map,?> result=taskResourceProvider.parseStructuredOutput("{\"host_resolution_check\": {\"failures\": [{\"cause\": [-2, \"Name or service not known\"], \"host\": \"foobar\", \"type\": \"FORWARD_LOOKUP\"}], \"message\": \"There were 1 host(s) that could not resolve to an IP address.\", \"failed_count\": 1, \"success_count\": 3, \"exit_code\": 0}}");
Assert.assertNotNull(result);
Map,?> host_resolution_check=(Map,?>)result.get("host_resolution_check");
assertEquals(host_resolution_check.get("success_count"),3);
assertEquals(host_resolution_check.get("failed_count"),1);
verify(managementController);
}
Class: org.apache.ambari.server.controller.internal.URLStreamProviderTest InternalCallVerifier EqualityVerifier
@Test public void testProcessURL() throws Exception {
HttpURLConnection connection=createNiceMock(HttpURLConnection.class);
AppCookieManager appCookieManager=createNiceMock(AppCookieManager.class);
URLStreamProvider urlStreamProvider=createMockBuilder(URLStreamProvider.class).withConstructor(Integer.TYPE,Integer.TYPE,String.class,String.class,String.class).withArgs(1000,1000,"path","password","type").addMockedMethod("getAppCookieManager").addMockedMethod("getConnection",String.class).createMock();
expect(urlStreamProvider.getAppCookieManager()).andReturn(appCookieManager).anyTimes();
expect(urlStreamProvider.getConnection("spec")).andReturn(connection);
Map> headerMap=new HashMap>();
headerMap.put("Header1",Collections.singletonList("value"));
headerMap.put("Cookie",Collections.singletonList("FOO=bar"));
expect(appCookieManager.getCachedAppCookie("spec")).andReturn("APPCOOKIE=abcdef");
connection.setConnectTimeout(1000);
connection.setReadTimeout(1000);
connection.setRequestMethod("GET");
connection.setRequestProperty("Header1","value");
connection.setRequestProperty("Cookie","FOO=bar; APPCOOKIE=abcdef");
replay(urlStreamProvider,connection,appCookieManager);
Assert.assertEquals(connection,urlStreamProvider.processURL("spec","GET",(String)null,headerMap));
verify(urlStreamProvider,connection,appCookieManager);
}
Class: org.apache.ambari.server.controller.internal.UpgradeResourceProviderHDP22Test APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests upgrades from HDP-2.2.x to HDP-2.2.y
* @throws Exception
*/
@SuppressWarnings("serial") @Test public void testCreateIntraStackUpgrade() throws Exception {
Cluster cluster=clusters.getCluster("c1");
StackId oldStack=cluster.getDesiredStackVersion();
for ( Service s : cluster.getServices().values()) {
assertEquals(oldStack,s.getDesiredStackVersion());
for ( ServiceComponent sc : s.getServiceComponents().values()) {
assertEquals(oldStack,sc.getDesiredStackVersion());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
assertEquals(oldStack,sch.getDesiredStackVersion());
}
}
}
Config config=new ConfigImpl("hive-site");
config.setProperties(configTagVersion1Properties);
config.setTag(configTagVersion1);
cluster.addConfig(config);
cluster.addDesiredConfig("admin",Collections.singleton(config));
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.4.2");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity upgrade=upgrades.get(0);
assertEquals("upgrade_test",upgrade.getUpgradePackage());
assertEquals(3,upgrade.getUpgradeGroups().size());
UpgradeGroupEntity group=upgrade.getUpgradeGroups().get(2);
assertEquals(3,group.getItems().size());
group=upgrade.getUpgradeGroups().get(0);
assertEquals(2,group.getItems().size());
UpgradeItemEntity item=group.getItems().get(1);
assertEquals("Value is set for the source stack upgrade pack","Goo",item.getText());
assertTrue(cluster.getDesiredConfigs().containsKey("hive-site"));
StackId newStack=cluster.getDesiredStackVersion();
assertTrue(oldStack.equals(newStack));
for ( Service s : cluster.getServices().values()) {
assertEquals(newStack,s.getDesiredStackVersion());
for ( ServiceComponent sc : s.getServiceComponents().values()) {
assertEquals(newStack,sc.getDesiredStackVersion());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
assertEquals(newStack,sch.getDesiredStackVersion());
}
}
}
assertEquals(configTagVersion1,cluster.getDesiredConfigByType("hive-site").getTag());
final Config newConfig=new ConfigImpl("hive-site");
newConfig.setProperties(configTagVersion2Properties);
newConfig.setTag(configTagVersion2);
Set desiredConfigs=new HashSet(){
{
add(newConfig);
}
}
;
cluster.addConfig(newConfig);
cluster.addDesiredConfig("admin",desiredConfigs);
assertEquals(configTagVersion2,cluster.getDesiredConfigByType("hive-site").getTag());
Gson gson=new Gson();
List currentExecutionCommands=injector.getInstance(ExecutionCommandDAO.class).findAll();
for ( ExecutionCommandEntity ece : currentExecutionCommands) {
String executionCommandJson=new String(ece.getCommand());
Map commandMap=gson.>fromJson(executionCommandJson,Map.class);
Set roleCommandsThatMustHaveRefresh=new HashSet();
roleCommandsThatMustHaveRefresh.add("SERVICE_CHECK");
roleCommandsThatMustHaveRefresh.add("RESTART");
roleCommandsThatMustHaveRefresh.add("ACTIONEXECUTE");
String roleCommand=(String)commandMap.get("roleCommand");
if (roleCommandsThatMustHaveRefresh.contains(roleCommand)) {
assertTrue(commandMap.containsKey(KeyNames.REFRESH_CONFIG_TAGS_BEFORE_EXECUTION));
Object object=commandMap.get(KeyNames.REFRESH_CONFIG_TAGS_BEFORE_EXECUTION);
assertTrue(object instanceof List);
@SuppressWarnings("unchecked") List tags=(List)commandMap.get(KeyNames.REFRESH_CONFIG_TAGS_BEFORE_EXECUTION);
assertEquals(1,tags.size());
assertEquals("*",tags.get(0));
ExecutionCommandWrapper executionCommandWrapper=new ExecutionCommandWrapper(executionCommandJson);
ExecutionCommand executionCommand=executionCommandWrapper.getExecutionCommand();
Map> configurationTags=executionCommand.getConfigurationTags();
assertEquals(configTagVersion2,configurationTags.get("hive-site").get("tag"));
Map> configurations=executionCommand.getConfigurations();
assertEquals("10010",configurations.get("hive-site").get("hive.server2.thrift.port"));
}
}
}
Class: org.apache.ambari.server.controller.internal.UpgradeResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that retrieving an upgrade correctly populates less common upgrade
* options correctly.
*/
@Test public void testGetResourcesWithSpecialOptions() throws Exception {
Cluster cluster=clusters.getCluster("c1");
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(0,upgrades.size());
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.1.1.1");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES,"true");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
RequestStatus status=upgradeResourceProvider.createResources(request);
assertNotNull(status);
Set propertyIds=new HashSet();
propertyIds.add("Upgrade");
Predicate predicate=new PredicateBuilder().property(UpgradeResourceProvider.UPGRADE_REQUEST_ID).equals("1").and().property(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME).equals("c1").toPredicate();
request=PropertyHelper.getReadRequest(propertyIds);
Set resources=upgradeResourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
assertEquals(true,resource.getPropertyValue(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES));
assertEquals(true,resource.getPropertyValue(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCreateResourcesWithAutoSkipManualVerification() throws Exception {
Cluster cluster=clusters.getCluster("c1");
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE,UpgradeType.ROLLING.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_MANUAL_VERIFICATION,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,Boolean.TRUE.toString());
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity entity=upgrades.get(0);
assertEquals(cluster.getClusterId(),entity.getClusterId().longValue());
List upgradeGroups=entity.getUpgradeGroups();
assertEquals(2,upgradeGroups.size());
UpgradeGroupEntity zookeeperGroup=upgradeGroups.get(0);
assertEquals("ZOOKEEPER",zookeeperGroup.getName());
List zookeeperUpgradeItems=zookeeperGroup.getItems();
assertEquals(3,zookeeperUpgradeItems.size());
assertEquals("Restarting ZooKeeper Server on h1",zookeeperUpgradeItems.get(0).getText());
assertEquals("Skipping Configuration Task 2.2.0",zookeeperUpgradeItems.get(1).getText());
assertEquals("Service Check ZooKeeper",zookeeperUpgradeItems.get(2).getText());
UpgradeGroupEntity postClusterGroup=upgradeGroups.get(1);
assertEquals("POST_CLUSTER",postClusterGroup.getName());
List postClusterUpgradeItems=postClusterGroup.getItems();
assertEquals(1,postClusterUpgradeItems.size());
assertEquals("Save Cluster State",postClusterUpgradeItems.get(0).getText());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDowngradeToBase() throws Exception {
Cluster cluster=clusters.getCluster("c1");
Map requestProps=new HashMap<>();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.1.1.1");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
requestProps=new HashMap<>();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
try {
upgradeResourceProvider.createResources(request);
Assert.fail("Expected an exception going downgrade with no upgrade pack");
}
catch ( Exception e) {
}
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
requestProps.put(UpgradeResourceProvider.UPGRADE_FROM_VERSION,"2.1.1.0");
Map requestInfoProperties=new HashMap<>();
requestInfoProperties.put(UpgradeResourceDefinition.DOWNGRADE_DIRECTIVE,"true");
request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),requestInfoProperties);
RequestStatus status=upgradeResourceProvider.createResources(request);
assertEquals(1,status.getAssociatedResources().size());
Resource r=status.getAssociatedResources().iterator().next();
String id=r.getPropertyValue("Upgrade/request_id").toString();
UpgradeEntity entity=upgradeDao.findUpgrade(Long.parseLong(id));
assertNotNull(entity);
assertEquals("2.1.1",entity.getFromVersion());
assertEquals("2.2.0.0",entity.getToVersion());
assertEquals(Direction.DOWNGRADE,entity.getDirection());
StageDAO dao=injector.getInstance(StageDAO.class);
List stages=dao.findByRequestId(entity.getRequestId());
Gson gson=new Gson();
for ( StageEntity se : stages) {
Map map=gson.fromJson(se.getCommandParamsStage(),Map.class);
assertTrue(map.containsKey("upgrade_direction"));
assertEquals("downgrade",map.get("upgrade_direction"));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreatePartialDowngrade() throws Exception {
clusters.addHost("h2");
Host host=clusters.getHost("h2");
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","6.3");
host.setHostAttributes(hostAttributes);
host.persist();
clusters.mapHostToCluster("h2","c1");
Cluster cluster=clusters.getCluster("c1");
Service service=cluster.getService("ZOOKEEPER");
ServiceComponent component=service.getServiceComponent("ZOOKEEPER_SERVER");
ServiceComponentHost sch=component.addServiceComponentHost("h2");
sch.setVersion("2.2.2.2");
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(0,upgrades.size());
UpgradeEntity upgradeEntity=new UpgradeEntity();
upgradeEntity.setClusterId(cluster.getClusterId());
upgradeEntity.setDirection(Direction.UPGRADE);
upgradeEntity.setFromVersion("2.1.1.1");
upgradeEntity.setToVersion("2.2.2.2");
upgradeEntity.setUpgradePackage("upgrade_test");
upgradeEntity.setUpgradeType(UpgradeType.ROLLING);
upgradeEntity.setRequestId(1L);
upgradeDao.create(upgradeEntity);
upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity lastUpgrade=upgradeDao.findLastUpgradeForCluster(cluster.getClusterId());
assertNotNull(lastUpgrade);
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.1.1.1");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
Map requestInfoProperties=new HashMap();
requestInfoProperties.put(UpgradeResourceDefinition.DOWNGRADE_DIRECTIVE,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),requestInfoProperties);
upgradeResourceProvider.createResources(request);
upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(2,upgrades.size());
UpgradeEntity downgrade=upgrades.get(1);
assertEquals(cluster.getClusterId(),downgrade.getClusterId().longValue());
List upgradeGroups=downgrade.getUpgradeGroups();
assertEquals(3,upgradeGroups.size());
UpgradeGroupEntity group=upgradeGroups.get(1);
assertEquals("ZOOKEEPER",group.getName());
assertEquals(4,group.getItems().size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDirectionUpgrade() throws Exception {
Cluster cluster=clusters.getCluster("c1");
StackEntity stackEntity=stackDAO.find("HDP","2.1.1");
RepositoryVersionEntity repoVersionEntity=new RepositoryVersionEntity();
repoVersionEntity.setDisplayName("My New Version 3");
repoVersionEntity.setOperatingSystems("");
repoVersionEntity.setStack(stackEntity);
repoVersionEntity.setVersion("2.2.2.3");
repoVersionDao.create(repoVersionEntity);
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.2.3");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_direction");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity upgrade=upgrades.get(0);
Long id=upgrade.getRequestId();
assertEquals(3,upgrade.getUpgradeGroups().size());
UpgradeGroupEntity group=upgrade.getUpgradeGroups().get(2);
Assert.assertEquals("POST_CLUSTER",group.getName());
Assert.assertTrue(!group.getItems().isEmpty());
for ( UpgradeItemEntity item : group.getItems()) {
Assert.assertFalse(item.getText().toLowerCase().contains("downgrade"));
}
requestProps.clear();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_direction");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
requestProps.put(UpgradeResourceProvider.UPGRADE_FROM_VERSION,"2.2.2.3");
Map requestInfoProps=new HashMap();
requestInfoProps.put("downgrade","true");
request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),requestInfoProps);
upgradeResourceProvider.createResources(request);
upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(2,upgrades.size());
upgrade=null;
for ( UpgradeEntity u : upgrades) {
if (!u.getRequestId().equals(id)) {
upgrade=u;
}
}
assertNotNull(upgrade);
assertEquals("Downgrade groups reduced from 3 to 2",2,upgrade.getUpgradeGroups().size());
group=upgrade.getUpgradeGroups().get(1);
assertEquals("Execution items increased from 1 to 2",2,group.getItems().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCreateResourcesWithAutoSkipFailures() throws Exception {
Cluster cluster=clusters.getCluster("c1");
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE,UpgradeType.ROLLING.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_MANUAL_VERIFICATION,Boolean.FALSE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,Boolean.TRUE.toString());
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity entity=upgrades.get(0);
assertEquals(cluster.getClusterId(),entity.getClusterId().longValue());
List upgradeGroups=entity.getUpgradeGroups();
assertEquals(3,upgradeGroups.size());
UpgradeGroupEntity preClusterGroup=upgradeGroups.get(0);
assertEquals("PRE_CLUSTER",preClusterGroup.getName());
List preClusterUpgradeItems=preClusterGroup.getItems();
assertEquals(2,preClusterUpgradeItems.size());
assertEquals("Foo",preClusterUpgradeItems.get(0).getText());
assertEquals("Foo",preClusterUpgradeItems.get(1).getText());
UpgradeGroupEntity zookeeperGroup=upgradeGroups.get(1);
assertEquals("ZOOKEEPER",zookeeperGroup.getName());
List zookeeperUpgradeItems=zookeeperGroup.getItems();
assertEquals(5,zookeeperUpgradeItems.size());
assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly",zookeeperUpgradeItems.get(0).getText());
assertEquals("Restarting ZooKeeper Server on h1",zookeeperUpgradeItems.get(1).getText());
assertEquals("Skipping Configuration Task 2.2.0",zookeeperUpgradeItems.get(2).getText());
assertEquals("Service Check ZooKeeper",zookeeperUpgradeItems.get(3).getText());
assertEquals("Verifying Skipped Failures",zookeeperUpgradeItems.get(4).getText());
UpgradeItemEntity skippedFailureCheck=zookeeperUpgradeItems.get(zookeeperUpgradeItems.size() - 1);
skippedFailureCheck.getTasks().contains(AutoSkipFailedSummaryAction.class.getName());
UpgradeGroupEntity postClusterGroup=upgradeGroups.get(2);
assertEquals("POST_CLUSTER",postClusterGroup.getName());
List postClusterUpgradeItems=postClusterGroup.getItems();
assertEquals(2,postClusterUpgradeItems.size());
assertEquals("Please confirm you are ready to finalize",postClusterUpgradeItems.get(0).getText());
assertEquals("Save Cluster State",postClusterUpgradeItems.get(1).getText());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAbort() throws Exception {
RequestStatus status=testCreateResources();
Set createdResources=status.getAssociatedResources();
assertEquals(1,createdResources.size());
Resource res=createdResources.iterator().next();
Long id=(Long)res.getPropertyValue("Upgrade/request_id");
assertNotNull(id);
assertEquals(Long.valueOf(1),id);
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_ID,id.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_STATUS,"ABORTED");
UpgradeResourceProvider urp=createProvider(amc);
Request req=PropertyHelper.getUpdateRequest(requestProps,null);
urp.updateResources(req,null);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCreateResourcesWithAutoSkipAll() throws Exception {
Cluster cluster=clusters.getCluster("c1");
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test");
requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE,UpgradeType.ROLLING.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_MANUAL_VERIFICATION,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,Boolean.TRUE.toString());
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity entity=upgrades.get(0);
assertEquals(cluster.getClusterId(),entity.getClusterId().longValue());
List upgradeGroups=entity.getUpgradeGroups();
assertEquals(2,upgradeGroups.size());
UpgradeGroupEntity zookeeperGroup=upgradeGroups.get(0);
assertEquals("ZOOKEEPER",zookeeperGroup.getName());
List zookeeperUpgradeItems=zookeeperGroup.getItems();
assertEquals(4,zookeeperUpgradeItems.size());
assertEquals("Restarting ZooKeeper Server on h1",zookeeperUpgradeItems.get(0).getText());
assertEquals("Skipping Configuration Task 2.2.0",zookeeperUpgradeItems.get(1).getText());
assertEquals("Service Check ZooKeeper",zookeeperUpgradeItems.get(2).getText());
assertEquals("Verifying Skipped Failures",zookeeperUpgradeItems.get(3).getText());
UpgradeItemEntity skippedFailureCheck=zookeeperUpgradeItems.get(zookeeperUpgradeItems.size() - 1);
skippedFailureCheck.getTasks().contains(AutoSkipFailedSummaryAction.class.getName());
UpgradeGroupEntity postClusterGroup=upgradeGroups.get(1);
assertEquals("POST_CLUSTER",postClusterGroup.getName());
List postClusterUpgradeItems=postClusterGroup.getItems();
assertEquals(1,postClusterUpgradeItems.size());
assertEquals("Save Cluster State",postClusterUpgradeItems.get(0).getText());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateSkipFailures() throws Exception {
testCreateResourcesWithAutoSkipFailures();
List upgrades=upgradeDao.findUpgrades(1);
assertEquals(1,upgrades.size());
UpgradeEntity entity=upgrades.get(0);
HostRoleCommandDAO dao=injector.getInstance(HostRoleCommandDAO.class);
List tasks=dao.findByRequest(entity.getRequestId());
for ( HostRoleCommandEntity task : tasks) {
StageEntity stage=task.getStage();
if (stage.isSkippable() && stage.isAutoSkipOnFailureSupported()) {
assertTrue(task.isFailureAutoSkipped());
}
else {
assertFalse(task.isFailureAutoSkipped());
}
}
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES,Boolean.FALSE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_ID,"" + entity.getRequestId());
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getUpdateRequest(requestProps,null);
upgradeResourceProvider.updateResources(request,null);
tasks=dao.findByRequest(entity.getRequestId());
for ( HostRoleCommandEntity task : tasks) {
if (task.getRoleCommand() == RoleCommand.SERVICE_CHECK) {
assertFalse(task.isFailureAutoSkipped());
}
else {
StageEntity stage=task.getStage();
if (stage.isSkippable() && stage.isAutoSkipOnFailureSupported()) {
assertTrue(task.isFailureAutoSkipped());
}
else {
assertFalse(task.isFailureAutoSkipped());
}
}
}
requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES,Boolean.FALSE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES,Boolean.TRUE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_ID,"" + entity.getRequestId());
request=PropertyHelper.getUpdateRequest(requestProps,null);
upgradeResourceProvider.updateResources(request,null);
tasks=dao.findByRequest(entity.getRequestId());
for ( HostRoleCommandEntity task : tasks) {
if (task.getRoleCommand() == RoleCommand.SERVICE_CHECK) {
StageEntity stage=task.getStage();
if (stage.isSkippable() && stage.isAutoSkipOnFailureSupported()) {
assertTrue(task.isFailureAutoSkipped());
}
else {
assertFalse(task.isFailureAutoSkipped());
}
}
else {
assertFalse(task.isFailureAutoSkipped());
}
}
requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES,Boolean.FALSE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES,Boolean.FALSE.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_ID,"" + entity.getRequestId());
request=PropertyHelper.getUpdateRequest(requestProps,null);
upgradeResourceProvider.updateResources(request,null);
tasks=dao.findByRequest(entity.getRequestId());
for ( HostRoleCommandEntity task : tasks) {
assertFalse(task.isFailureAutoSkipped());
}
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRetry() throws Exception {
RequestStatus status=testCreateResources();
Set createdResources=status.getAssociatedResources();
assertEquals(1,createdResources.size());
Resource res=createdResources.iterator().next();
Long id=(Long)res.getPropertyValue("Upgrade/request_id");
assertNotNull(id);
assertEquals(Long.valueOf(1),id);
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_ID,id.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_STATUS,"ABORTED");
UpgradeResourceProvider urp=createProvider(amc);
Request req=PropertyHelper.getUpdateRequest(requestProps,null);
urp.updateResources(req,null);
ActionManager am=injector.getInstance(ActionManager.class);
List commands=am.getRequestTasks(id);
boolean foundOne=false;
for ( HostRoleCommand hrc : commands) {
if (hrc.getRole().equals(Role.AMBARI_SERVER_ACTION)) {
assertEquals(-1L,hrc.getHostId());
assertNull(hrc.getHostName());
foundOne=true;
}
}
assertTrue("Expected at least one server-side action",foundOne);
HostRoleCommand cmd=commands.get(commands.size() - 1);
HostRoleCommandDAO dao=injector.getInstance(HostRoleCommandDAO.class);
HostRoleCommandEntity entity=dao.findByPK(cmd.getTaskId());
entity.setStatus(HostRoleStatus.ABORTED);
dao.merge(entity);
requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_ID,id.toString());
requestProps.put(UpgradeResourceProvider.UPGRADE_REQUEST_STATUS,"PENDING");
req=PropertyHelper.getUpdateRequest(requestProps,null);
urp.updateResources(req,null);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testCreateCrossStackUpgrade() throws Exception {
Cluster cluster=clusters.getCluster("c1");
StackId oldStack=cluster.getDesiredStackVersion();
for ( Service s : cluster.getServices().values()) {
assertEquals(oldStack,s.getDesiredStackVersion());
for ( ServiceComponent sc : s.getServiceComponents().values()) {
assertEquals(oldStack,sc.getDesiredStackVersion());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
assertEquals(oldStack,sch.getDesiredStackVersion());
}
}
}
Config config=new ConfigImpl("zoo.cfg");
config.setProperties(new HashMap(){
{
put("a","b");
}
}
);
config.setTag("abcdefg");
cluster.addConfig(config);
cluster.addDesiredConfig("admin",Collections.singleton(config));
Map requestProps=new HashMap();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_test_nonrolling");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
UpgradeEntity upgrade=upgrades.get(0);
assertEquals(5,upgrade.getUpgradeGroups().size());
UpgradeGroupEntity group=upgrade.getUpgradeGroups().get(2);
assertEquals(1,group.getItems().size());
group=upgrade.getUpgradeGroups().get(0);
assertEquals(1,group.getItems().size());
assertTrue(cluster.getDesiredConfigs().containsKey("zoo.cfg"));
StackId newStack=cluster.getDesiredStackVersion();
assertFalse(oldStack.equals(newStack));
for ( Service s : cluster.getServices().values()) {
assertEquals(newStack,s.getDesiredStackVersion());
for ( ServiceComponent sc : s.getServiceComponents().values()) {
assertEquals(newStack,sc.getDesiredStackVersion());
for ( ServiceComponentHost sch : sc.getServiceComponentHosts().values()) {
assertEquals(newStack,sch.getDesiredStackVersion());
}
}
}
}
APIUtilityVerifier BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPercents() throws Exception {
RequestStatus status=testCreateResources();
Set createdResources=status.getAssociatedResources();
assertEquals(1,createdResources.size());
Resource res=createdResources.iterator().next();
Long id=(Long)res.getPropertyValue("Upgrade/request_id");
assertNotNull(id);
assertEquals(Long.valueOf(1),id);
StageDAO stageDao=injector.getInstance(StageDAO.class);
HostRoleCommandDAO hrcDao=injector.getInstance(HostRoleCommandDAO.class);
List stages=stageDao.findByRequestId(id);
List tasks=hrcDao.findByRequest(id);
Set stageIds=new HashSet();
for ( StageEntity se : stages) {
stageIds.add(se.getStageId());
}
CalculatedStatus calc=null;
int i=0;
for ( HostRoleCommandEntity hrce : tasks) {
hrce.setStatus(HostRoleStatus.IN_PROGRESS);
hrcDao.merge(hrce);
calc=CalculatedStatus.statusFromStageSummary(hrcDao.findAggregateCounts(id),stageIds);
assertEquals(((i++) + 1) * 4.375d,calc.getPercent(),0.01d);
assertEquals(HostRoleStatus.IN_PROGRESS,calc.getStatus());
}
i=0;
for ( HostRoleCommandEntity hrce : tasks) {
hrce.setStatus(HostRoleStatus.COMPLETED);
hrcDao.merge(hrce);
calc=CalculatedStatus.statusFromStageSummary(hrcDao.findAggregateCounts(id),stageIds);
assertEquals(35 + (((i++) + 1) * 8.125),calc.getPercent(),0.01d);
if (i < 8) {
assertEquals(HostRoleStatus.IN_PROGRESS,calc.getStatus());
}
}
calc=CalculatedStatus.statusFromStageSummary(hrcDao.findAggregateCounts(id),stageIds);
assertEquals(HostRoleStatus.COMPLETED,calc.getStatus());
assertEquals(100d,calc.getPercent(),0.01d);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests merging configurations between existing and new stack values on
* upgrade.
* @throws Exception
*/
@Test public void testMergeConfigurations() throws Exception {
StackId stack211=new StackId("HDP-2.1.1");
StackId stack220=new StackId("HDP-2.2.0");
Map> stack211Configs=new HashMap>();
Map stack211FooType=new HashMap();
Map stack211BarType=new HashMap();
Map stack211BazType=new HashMap();
stack211Configs.put("foo-site",stack211FooType);
stack211Configs.put("bar-site",stack211BarType);
stack211Configs.put("baz-site",stack211BazType);
stack211FooType.put("1","one");
stack211FooType.put("11","one-one");
stack211BarType.put("2","two");
stack211BazType.put("3","three");
Map> stack220Configs=new HashMap>();
Map stack220FooType=new HashMap();
Map stack220BazType=new HashMap();
Map stack220FlumeEnvType=new HashMap();
stack220Configs.put("foo-site",stack220FooType);
stack220Configs.put("baz-site",stack220BazType);
stack220Configs.put("flume-env",stack220FlumeEnvType);
stack220FooType.put("1","one-new");
stack220FooType.put("111","one-one-one");
stack220BazType.put("3","three-new");
stack220FlumeEnvType.put("flume_env_key","flume-env-value");
Map clusterFooType=new HashMap();
Map clusterBarType=new HashMap();
Map clusterBazType=new HashMap();
Config fooConfig=EasyMock.createNiceMock(Config.class);
Config barConfig=EasyMock.createNiceMock(Config.class);
Config bazConfig=EasyMock.createNiceMock(Config.class);
clusterFooType.put("1","one");
clusterFooType.put("11","one-one");
clusterBarType.put("2","two");
clusterBazType.put("3","three-changed");
expect(fooConfig.getProperties()).andReturn(clusterFooType);
expect(barConfig.getProperties()).andReturn(clusterBarType);
expect(bazConfig.getProperties()).andReturn(clusterBazType);
Map desiredConfigurations=new HashMap();
desiredConfigurations.put("foo-site",null);
desiredConfigurations.put("bar-site",null);
desiredConfigurations.put("baz-site",null);
Cluster cluster=EasyMock.createNiceMock(Cluster.class);
expect(cluster.getCurrentStackVersion()).andReturn(stack211);
expect(cluster.getDesiredStackVersion()).andReturn(stack220);
expect(cluster.getDesiredConfigs()).andReturn(desiredConfigurations);
expect(cluster.getDesiredConfigByType("foo-site")).andReturn(fooConfig);
expect(cluster.getDesiredConfigByType("bar-site")).andReturn(barConfig);
expect(cluster.getDesiredConfigByType("baz-site")).andReturn(bazConfig);
EasyMock.reset(configHelper);
expect(configHelper.getDefaultProperties(EasyMock.eq(stack211),EasyMock.anyObject(Cluster.class))).andReturn(stack211Configs).anyTimes();
expect(configHelper.getDefaultProperties(EasyMock.eq(stack220),EasyMock.anyObject(Cluster.class))).andReturn(stack220Configs).anyTimes();
Capture>> expectedConfigurationsCapture=new Capture>>();
configHelper.createConfigTypes(EasyMock.anyObject(Cluster.class),EasyMock.anyObject(AmbariManagementController.class),EasyMock.capture(expectedConfigurationsCapture),EasyMock.anyObject(String.class),EasyMock.anyObject(String.class));
EasyMock.expectLastCall().once();
EasyMock.replay(configHelper,cluster,fooConfig,barConfig,bazConfig);
UpgradeResourceProvider upgradeResourceProvider=createProvider(amc);
Map upgradePacks=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
UpgradePack upgrade=upgradePacks.get("upgrade_to_new_stack");
upgradeResourceProvider.applyStackAndProcessConfigurations(stack211.getStackName(),cluster,"2.2.0.0",Direction.UPGRADE,upgrade,"admin");
Map> expectedConfigurations=expectedConfigurationsCapture.getValue();
Map expectedFooType=expectedConfigurations.get("foo-site");
Map expectedBarType=expectedConfigurations.get("bar-site");
Map expectedBazType=expectedConfigurations.get("baz-site");
assertFalse(expectedConfigurations.containsKey("flume-env"));
assertEquals("one-new",expectedFooType.get("1"));
assertEquals("one-one",expectedFooType.get("11"));
assertEquals("two",expectedBarType.get("2"));
assertEquals("three-changed",expectedBazType.get("3"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Test Downgrade from the partially completed upgrade
*/
@Test public void testNotFullDowngrade() throws Exception {
Cluster cluster=clusters.getCluster("c1");
Service service=cluster.addService("HIVE");
service.setDesiredStackVersion(cluster.getDesiredStackVersion());
service.persist();
ServiceComponent component=service.addServiceComponent("HIVE_SERVER");
ServiceComponentHost sch=component.addServiceComponentHost("h1");
sch.setVersion("2.1.1.0");
Map requestProps=new HashMap<>();
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.2.0.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_nonrolling_new_stack");
requestProps.put(UpgradeResourceProvider.UPGRADE_TYPE,"NON_ROLLING");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
ResourceProvider upgradeResourceProvider=createProvider(amc);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
upgradeResourceProvider.createResources(request);
List upgrades=upgradeDao.findUpgrades(cluster.getClusterId());
assertEquals(1,upgrades.size());
List groups=upgrades.get(0).getUpgradeGroups();
boolean isHiveGroupFound=false;
boolean isZKGroupFound=false;
for ( UpgradeGroupEntity group : groups) {
if (group.getName().equalsIgnoreCase("hive")) {
isHiveGroupFound=true;
}
else if (group.getName().equalsIgnoreCase("zookeeper")) {
isZKGroupFound=true;
}
}
assertTrue(isHiveGroupFound);
assertTrue(isZKGroupFound);
isHiveGroupFound=false;
isZKGroupFound=false;
sch.setVersion("2.2.0.0");
StackId stackId=new StackId("HDP","2.2.0");
cluster.setDesiredStackVersion(stackId,true);
requestProps.put(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME,"c1");
requestProps.put(UpgradeResourceProvider.UPGRADE_VERSION,"2.1.1.0");
requestProps.put(UpgradeResourceProvider.UPGRADE_PACK,"upgrade_nonrolling_new_stack");
requestProps.put(UpgradeResourceProvider.UPGRADE_SKIP_PREREQUISITE_CHECKS,"true");
requestProps.put(UpgradeResourceProvider.UPGRADE_FROM_VERSION,"2.2.0.0");
Map requestInfoProperties=new HashMap<>();
requestInfoProperties.put(UpgradeResourceDefinition.DOWNGRADE_DIRECTIVE,"true");
request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),requestInfoProperties);
RequestStatus status=upgradeResourceProvider.createResources(request);
UpgradeEntity upgradeEntity=upgradeDao.findUpgradeByRequestId(getRequestId(status));
for ( UpgradeGroupEntity group : upgradeEntity.getUpgradeGroups()) {
if (group.getName().equalsIgnoreCase("hive")) {
isHiveGroupFound=true;
}
else if (group.getName().equalsIgnoreCase("zookeeper")) {
isZKGroupFound=true;
}
}
assertTrue(isHiveGroupFound);
assertFalse(isZKGroupFound);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
RequestStatus status=testCreateResources();
Set createdResources=status.getAssociatedResources();
assertEquals(1,createdResources.size());
Resource res=createdResources.iterator().next();
Long id=(Long)res.getPropertyValue("Upgrade/request_id");
assertNotNull(id);
assertEquals(Long.valueOf(1),id);
Set propertyIds=new HashSet();
propertyIds.add("Upgrade");
Predicate predicate=new PredicateBuilder().property(UpgradeResourceProvider.UPGRADE_REQUEST_ID).equals("1").and().property(UpgradeResourceProvider.UPGRADE_CLUSTER_NAME).equals("c1").toPredicate();
Request request=PropertyHelper.getReadRequest(propertyIds);
ResourceProvider upgradeResourceProvider=createProvider(amc);
Set resources=upgradeResourceProvider.getResources(request,predicate);
assertEquals(1,resources.size());
res=resources.iterator().next();
assertNotNull(res.getPropertyValue("Upgrade/progress_percent"));
assertNotNull(res.getPropertyValue(UpgradeResourceProvider.UPGRADE_DIRECTION));
assertEquals(Direction.UPGRADE,res.getPropertyValue(UpgradeResourceProvider.UPGRADE_DIRECTION));
assertEquals(false,res.getPropertyValue(UpgradeResourceProvider.UPGRADE_SKIP_FAILURES));
assertEquals(false,res.getPropertyValue(UpgradeResourceProvider.UPGRADE_SKIP_SC_FAILURES));
assertEquals(UpgradeType.ROLLING,res.getPropertyValue(UpgradeResourceProvider.UPGRADE_TYPE));
propertyIds.clear();
propertyIds.add("UpgradeGroup");
predicate=new PredicateBuilder().property(UpgradeGroupResourceProvider.UPGRADE_REQUEST_ID).equals("1").and().property(UpgradeGroupResourceProvider.UPGRADE_CLUSTER_NAME).equals("c1").toPredicate();
request=PropertyHelper.getReadRequest(propertyIds);
ResourceProvider upgradeGroupResourceProvider=new UpgradeGroupResourceProvider(amc);
resources=upgradeGroupResourceProvider.getResources(request,predicate);
assertEquals(3,resources.size());
res=resources.iterator().next();
assertNotNull(res.getPropertyValue("UpgradeGroup/status"));
assertNotNull(res.getPropertyValue("UpgradeGroup/group_id"));
assertNotNull(res.getPropertyValue("UpgradeGroup/total_task_count"));
assertNotNull(res.getPropertyValue("UpgradeGroup/in_progress_task_count"));
assertNotNull(res.getPropertyValue("UpgradeGroup/completed_task_count"));
propertyIds.clear();
propertyIds.add("UpgradeItem");
predicate=new PredicateBuilder().property(UpgradeItemResourceProvider.UPGRADE_GROUP_ID).equals("1").and().property(UpgradeItemResourceProvider.UPGRADE_REQUEST_ID).equals("1").and().property(UpgradeItemResourceProvider.UPGRADE_CLUSTER_NAME).equals("c1").toPredicate();
request=PropertyHelper.getReadRequest(propertyIds);
ResourceProvider upgradeItemResourceProvider=new UpgradeItemResourceProvider(amc);
resources=upgradeItemResourceProvider.getResources(request,predicate);
assertEquals(2,resources.size());
res=resources.iterator().next();
assertNotNull(res.getPropertyValue("UpgradeItem/status"));
propertyIds.clear();
propertyIds.add("UpgradeItem");
predicate=new PredicateBuilder().property(UpgradeItemResourceProvider.UPGRADE_GROUP_ID).equals("3").and().property(UpgradeItemResourceProvider.UPGRADE_REQUEST_ID).equals("1").and().property(UpgradeItemResourceProvider.UPGRADE_CLUSTER_NAME).equals("c1").toPredicate();
request=PropertyHelper.getReadRequest(propertyIds);
upgradeItemResourceProvider=new UpgradeItemResourceProvider(amc);
resources=upgradeItemResourceProvider.getResources(request,predicate);
assertEquals(2,resources.size());
res=resources.iterator().next();
assertEquals("Confirm Finalize",res.getPropertyValue("UpgradeItem/context"));
assertTrue(res.getPropertyValue("UpgradeItem/text").toString().startsWith("Please confirm"));
}
Class: org.apache.ambari.server.controller.internal.UserPrivilegeResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testToResource_AMBARI(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("AMBARI").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
UserEntity userEntity=createMock(UserEntity.class);
expect(userEntity.getUserName()).andReturn("jdoe").atLeastOnce();
UserDAO userDAO=createMock(UserDAO.class);
expect(userDAO.findUserByPrincipal(anyObject(PrincipalEntity.class))).andReturn(userEntity).anyTimes();
ClusterDAO clusterDAO=createMock(ClusterDAO.class);
GroupDAO groupDAO=createMock(GroupDAO.class);
ViewInstanceDAO viewInstanceDAO=createMock(ViewInstanceDAO.class);
replayAll();
UserPrivilegeResourceProvider.init(userDAO,clusterDAO,groupDAO,viewInstanceDAO);
UserPrivilegeResourceProvider provider=new UserPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,"jdoe",provider.getPropertyIds());
Assert.assertEquals(ResourceType.AMBARI.name(),resource.getPropertyValue(UserPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verifyAll();
}
InternalCallVerifier EqualityVerifier
@Test public void testToResource_CLUSTER(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("CLUSTER.ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Cluster Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ClusterEntity clusterEntity=createMock(ClusterEntity.class);
expect(clusterEntity.getClusterName()).andReturn("TestCluster").atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("CLUSTER").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getId()).andReturn(1L).atLeastOnce();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
UserEntity userEntity=createMock(UserEntity.class);
expect(userEntity.getUserName()).andReturn("jdoe").atLeastOnce();
ClusterDAO clusterDAO=createMock(ClusterDAO.class);
expect(clusterDAO.findByResourceId(1L)).andReturn(clusterEntity).atLeastOnce();
GroupDAO groupDAO=createMock(GroupDAO.class);
ViewInstanceDAO viewInstanceDAO=createMock(ViewInstanceDAO.class);
UserDAO userDAO=createMock(UserDAO.class);
expect(userDAO.findUserByPrincipal(anyObject(PrincipalEntity.class))).andReturn(userEntity).anyTimes();
replayAll();
UserPrivilegeResourceProvider.init(userDAO,clusterDAO,groupDAO,viewInstanceDAO);
UserPrivilegeResourceProvider provider=new UserPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,"jdoe",provider.getPropertyIds());
Assert.assertEquals("TestCluster",resource.getPropertyValue(ClusterPrivilegeResourceProvider.PRIVILEGE_CLUSTER_NAME_PROPERTY_ID));
Assert.assertEquals(ResourceType.CLUSTER.name(),resource.getPropertyValue(UserPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verifyAll();
}
InternalCallVerifier EqualityVerifier
@Test public void testToResource_VIEW(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("CLUSTER.ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Cluster Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ViewEntity viewEntity=createMock(ViewEntity.class);
expect(viewEntity.getCommonName()).andReturn("TestView").atLeastOnce();
expect(viewEntity.getVersion()).andReturn("1.2.3.4").atLeastOnce();
ViewInstanceEntity viewInstanceEntity=createMock(ViewInstanceEntity.class);
expect(viewInstanceEntity.getViewEntity()).andReturn(viewEntity).atLeastOnce();
expect(viewInstanceEntity.getName()).andReturn("Test View").atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("VIEW").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getId()).andReturn(1L).atLeastOnce();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
UserEntity userEntity=createMock(UserEntity.class);
expect(userEntity.getUserName()).andReturn("jdoe").atLeastOnce();
ClusterDAO clusterDAO=createMock(ClusterDAO.class);
GroupDAO groupDAO=createMock(GroupDAO.class);
ViewInstanceDAO viewInstanceDAO=createMock(ViewInstanceDAO.class);
expect(viewInstanceDAO.findByResourceId(1L)).andReturn(viewInstanceEntity).atLeastOnce();
UserDAO userDAO=createMock(UserDAO.class);
expect(userDAO.findUserByPrincipal(anyObject(PrincipalEntity.class))).andReturn(userEntity).anyTimes();
replayAll();
UserPrivilegeResourceProvider.init(userDAO,clusterDAO,groupDAO,viewInstanceDAO);
UserPrivilegeResourceProvider provider=new UserPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,"jdoe",provider.getPropertyIds());
Assert.assertEquals("Test View",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
Assert.assertEquals("TestView",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
Assert.assertEquals("1.2.3.4",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_VERSION_PROPERTY_ID));
Assert.assertEquals(ResourceType.VIEW.name(),resource.getPropertyValue(UserPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verifyAll();
}
InternalCallVerifier EqualityVerifier
@Test public void testToResource_SpecificVIEW(){
PermissionEntity permissionEntity=createMock(PermissionEntity.class);
expect(permissionEntity.getPermissionName()).andReturn("CLUSTER.ADMINISTRATOR").atLeastOnce();
expect(permissionEntity.getPermissionLabel()).andReturn("Cluster Administrator").atLeastOnce();
PrincipalTypeEntity principalTypeEntity=createMock(PrincipalTypeEntity.class);
expect(principalTypeEntity.getName()).andReturn("USER").atLeastOnce();
PrincipalEntity principalEntity=createMock(PrincipalEntity.class);
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).atLeastOnce();
ViewEntity viewEntity=createMock(ViewEntity.class);
expect(viewEntity.getCommonName()).andReturn("TestView").atLeastOnce();
expect(viewEntity.getVersion()).andReturn("1.2.3.4").atLeastOnce();
ViewInstanceEntity viewInstanceEntity=createMock(ViewInstanceEntity.class);
expect(viewInstanceEntity.getViewEntity()).andReturn(viewEntity).atLeastOnce();
expect(viewInstanceEntity.getName()).andReturn("Test View").atLeastOnce();
ResourceTypeEntity resourceTypeEntity=createMock(ResourceTypeEntity.class);
expect(resourceTypeEntity.getName()).andReturn("TestView{1.2.3.4}").atLeastOnce();
ResourceEntity resourceEntity=createMock(ResourceEntity.class);
expect(resourceEntity.getId()).andReturn(1L).atLeastOnce();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).atLeastOnce();
PrivilegeEntity privilegeEntity=createMock(PrivilegeEntity.class);
expect(privilegeEntity.getId()).andReturn(1).atLeastOnce();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).atLeastOnce();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).atLeastOnce();
expect(privilegeEntity.getResource()).andReturn(resourceEntity).atLeastOnce();
UserEntity userEntity=createMock(UserEntity.class);
expect(userEntity.getUserName()).andReturn("jdoe").atLeastOnce();
ClusterDAO clusterDAO=createMock(ClusterDAO.class);
GroupDAO groupDAO=createMock(GroupDAO.class);
ViewInstanceDAO viewInstanceDAO=createMock(ViewInstanceDAO.class);
expect(viewInstanceDAO.findByResourceId(1L)).andReturn(viewInstanceEntity).atLeastOnce();
UserDAO userDAO=createMock(UserDAO.class);
expect(userDAO.findUserByPrincipal(anyObject(PrincipalEntity.class))).andReturn(userEntity).anyTimes();
replayAll();
UserPrivilegeResourceProvider.init(userDAO,clusterDAO,groupDAO,viewInstanceDAO);
UserPrivilegeResourceProvider provider=new UserPrivilegeResourceProvider();
Resource resource=provider.toResource(privilegeEntity,"jdoe",provider.getPropertyIds());
Assert.assertEquals("Test View",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_INSTANCE_NAME_PROPERTY_ID));
Assert.assertEquals("TestView",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_NAME_PROPERTY_ID));
Assert.assertEquals("1.2.3.4",resource.getPropertyValue(ViewPrivilegeResourceProvider.PRIVILEGE_VIEW_VERSION_PROPERTY_ID));
Assert.assertEquals(ResourceType.VIEW.name(),resource.getPropertyValue(UserPrivilegeResourceProvider.PRIVILEGE_TYPE_PROPERTY_ID));
verifyAll();
}
Class: org.apache.ambari.server.controller.internal.ValidationResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateResources_checkRequestId() throws Exception {
Map keyPropertyIds=Collections.emptyMap();
Set propertyIds=Collections.singleton(ValidationResourceProvider.VALIDATION_ID_PROPERTY_ID);
AmbariManagementController ambariManagementController=mock(AmbariManagementController.class);
ValidationResourceProvider provider=spy(new ValidationResourceProvider(propertyIds,keyPropertyIds,ambariManagementController));
StackAdvisorRequest stackAdvisorRequest=mock(StackAdvisorRequest.class);
Request request=mock(Request.class);
doReturn(stackAdvisorRequest).when(provider).prepareStackAdvisorRequest(request);
StackAdvisorHelper saHelper=mock(StackAdvisorHelper.class);
ValidationResponse response=mock(ValidationResponse.class);
Version version=mock(Version.class);
doReturn(3).when(response).getId();
doReturn(version).when(response).getVersion();
doReturn(response).when(saHelper).validate(any(StackAdvisorRequest.class));
ValidationResourceProvider.init(saHelper);
RequestStatus status=provider.createResources(request);
Set associatedResources=status.getAssociatedResources();
assertNotNull(associatedResources);
assertEquals(1,associatedResources.size());
Resource resource=associatedResources.iterator().next();
Object requestId=resource.getPropertyValue(ValidationResourceProvider.VALIDATION_ID_PROPERTY_ID);
assertNotNull(requestId);
assertEquals(3,requestId);
}
Class: org.apache.ambari.server.controller.internal.ViewInstanceResourceProviderTest InternalCallVerifier NullVerifier
@Test public void testUpdateResources_viewNotLoaded() throws Exception {
ViewInstanceResourceProvider provider=new ViewInstanceResourceProvider();
Set> properties=new HashSet>();
Map propertyMap=new HashMap();
propertyMap.put(ViewInstanceResourceProvider.ICON_PATH_ID,"path");
properties.add(propertyMap);
PredicateBuilder predicateBuilder=new PredicateBuilder();
Predicate predicate=predicateBuilder.property(ViewInstanceResourceProvider.VIEW_NAME_PROPERTY_ID).equals("V1").toPredicate();
ViewEntity viewEntity=new ViewEntity();
viewEntity.setName("V1{1.0.0}");
viewEntity.setStatus(ViewDefinition.ViewStatus.DEPLOYING);
ViewInstanceEntity viewInstanceEntity=new ViewInstanceEntity();
viewInstanceEntity.setViewName("V1{1.0.0}");
viewInstanceEntity.setName("I1");
viewInstanceEntity.setViewEntity(viewEntity);
expect(singleton.getDefinitions()).andReturn(Collections.singleton(viewEntity));
replay(singleton);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
provider.updateResources(PropertyHelper.getCreateRequest(properties,null),predicate);
Assert.assertNull(viewInstanceEntity.getIcon());
verify(singleton);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testToResource() throws Exception {
ViewInstanceResourceProvider provider=new ViewInstanceResourceProvider();
Set propertyIds=new HashSet();
propertyIds.add(ViewInstanceResourceProvider.PROPERTIES_PROPERTY_ID);
propertyIds.add(ViewInstanceResourceProvider.CLUSTER_HANDLE_PROPERTY_ID);
ViewInstanceEntity viewInstanceEntity=createNiceMock(ViewInstanceEntity.class);
ViewEntity viewEntity=createNiceMock(ViewEntity.class);
expect(viewInstanceEntity.getViewEntity()).andReturn(viewEntity).anyTimes();
Map propertyMap=new HashMap();
propertyMap.put("par1","val1");
propertyMap.put("par2","val2");
expect(viewInstanceEntity.getPropertyMap()).andReturn(propertyMap);
expect(viewInstanceEntity.getData()).andReturn(Collections.emptyList()).anyTimes();
expect(singleton.checkAdmin()).andReturn(true);
expect(singleton.checkAdmin()).andReturn(false);
expect(viewInstanceEntity.getClusterHandle()).andReturn("c1");
replay(singleton,viewEntity,viewInstanceEntity);
Resource resource=provider.toResource(viewInstanceEntity,propertyIds);
Map> properties=resource.getPropertiesMap();
assertEquals(2,properties.size());
Map props=properties.get("ViewInstanceInfo");
assertNotNull(props);
assertEquals(1,props.size());
assertEquals("c1",props.get("cluster_handle"));
props=properties.get("ViewInstanceInfo/properties");
assertNotNull(props);
assertEquals(2,props.size());
assertEquals("val1",props.get("par1"));
assertEquals("val2",props.get("par2"));
resource=provider.toResource(viewInstanceEntity,propertyIds);
properties=resource.getPropertiesMap();
props=properties.get("ViewInstanceInfo/properties");
assertNull(props);
verify(singleton,viewEntity,viewInstanceEntity);
}
Class: org.apache.ambari.server.controller.internal.ViewPermissionResourceProviderTest InternalCallVerifier EqualityVerifier
@Test public void testGetResources_viewNotLoaded() throws Exception {
List permissionEntities=new LinkedList();
PermissionEntity permissionEntity=createNiceMock(PermissionEntity.class);
PermissionEntity viewUsePermissionEntity=createNiceMock(PermissionEntity.class);
ResourceTypeEntity resourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
ViewEntity viewEntity=createMock(ViewEntity.class);
permissionEntities.add(permissionEntity);
expect(dao.findViewUsePermission()).andReturn(viewUsePermissionEntity);
expect(dao.findAll()).andReturn(Collections.singletonList(permissionEntity));
expect(permissionEntity.getResourceType()).andReturn(resourceTypeEntity);
expect(viewEntity.isDeployed()).andReturn(false).anyTimes();
expect(viewRegistry.getDefinition(resourceTypeEntity)).andReturn(viewEntity);
replay(dao,permissionEntity,viewUsePermissionEntity,resourceTypeEntity,viewEntity,viewRegistry);
ViewPermissionResourceProvider provider=new ViewPermissionResourceProvider();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(0,resources.size());
verify(dao,permissionEntity,viewUsePermissionEntity,resourceTypeEntity,viewEntity,viewRegistry);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
List permissionEntities=new LinkedList();
PermissionEntity permissionEntity=createNiceMock(PermissionEntity.class);
PermissionEntity viewUsePermissionEntity=createNiceMock(PermissionEntity.class);
ResourceTypeEntity resourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
ViewEntity viewEntity=createMock(ViewEntity.class);
permissionEntities.add(permissionEntity);
expect(dao.findViewUsePermission()).andReturn(viewUsePermissionEntity);
expect(dao.findAll()).andReturn(Collections.singletonList(permissionEntity));
expect(permissionEntity.getId()).andReturn(99);
expect(permissionEntity.getPermissionName()).andReturn("P1");
expect(permissionEntity.getResourceType()).andReturn(resourceTypeEntity);
expect(resourceTypeEntity.getName()).andReturn("V1");
expect(viewEntity.isDeployed()).andReturn(true).anyTimes();
expect(viewEntity.getCommonName()).andReturn("V1").anyTimes();
expect(viewEntity.getVersion()).andReturn("1.0.0").anyTimes();
expect(viewRegistry.getDefinition(resourceTypeEntity)).andReturn(viewEntity);
replay(dao,permissionEntity,viewUsePermissionEntity,resourceTypeEntity,viewEntity,viewRegistry);
ViewPermissionResourceProvider provider=new ViewPermissionResourceProvider();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals(99,resource.getPropertyValue(PermissionResourceProvider.PERMISSION_ID_PROPERTY_ID));
Assert.assertEquals("P1",resource.getPropertyValue(PermissionResourceProvider.PERMISSION_NAME_PROPERTY_ID));
Assert.assertEquals("V1",resource.getPropertyValue(PermissionResourceProvider.RESOURCE_NAME_PROPERTY_ID));
verify(dao,permissionEntity,viewUsePermissionEntity,resourceTypeEntity,viewEntity,viewRegistry);
}
Class: org.apache.ambari.server.controller.internal.ViewPrivilegeResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources() throws Exception {
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=ViewInstanceEntityTest.getViewInstanceEntity();
viewDefinition.addInstanceDefinition(viewInstanceDefinition);
viewInstanceDefinition.setViewEntity(viewDefinition);
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED);
ViewRegistry registry=ViewRegistry.getInstance();
registry.addDefinition(viewDefinition);
registry.addInstanceDefinition(viewDefinition,viewInstanceDefinition);
List privilegeEntities=new LinkedList();
PrivilegeEntity privilegeEntity=createNiceMock(PrivilegeEntity.class);
ResourceEntity resourceEntity=createNiceMock(ResourceEntity.class);
UserEntity userEntity=createNiceMock(UserEntity.class);
PrincipalEntity principalEntity=createNiceMock(PrincipalEntity.class);
PrincipalTypeEntity principalTypeEntity=createNiceMock(PrincipalTypeEntity.class);
PermissionEntity permissionEntity=createNiceMock(PermissionEntity.class);
List principalEntities=new LinkedList();
principalEntities.add(principalEntity);
List userEntities=new LinkedList();
userEntities.add(userEntity);
privilegeEntities.add(privilegeEntity);
expect(privilegeDAO.findAll()).andReturn(privilegeEntities);
expect(privilegeEntity.getResource()).andReturn(resourceEntity).anyTimes();
expect(privilegeEntity.getPrincipal()).andReturn(principalEntity).anyTimes();
expect(privilegeEntity.getPermission()).andReturn(permissionEntity).anyTimes();
expect(resourceEntity.getId()).andReturn(20L).anyTimes();
expect(principalEntity.getId()).andReturn(20L).anyTimes();
expect(userEntity.getPrincipal()).andReturn(principalEntity).anyTimes();
expect(userEntity.getUserName()).andReturn("joe").anyTimes();
expect(permissionEntity.getPermissionName()).andReturn("VIEW.USER").anyTimes();
expect(permissionEntity.getPermissionLabel()).andReturn("View User").anyTimes();
expect(principalEntity.getPrincipalType()).andReturn(principalTypeEntity).anyTimes();
expect(principalTypeEntity.getName()).andReturn("USER").anyTimes();
expect(permissionDAO.findById(PermissionEntity.VIEW_USER_PERMISSION)).andReturn(permissionEntity);
expect(userDAO.findUsersByPrincipal(principalEntities)).andReturn(userEntities);
expect(groupDAO.findGroupsByPrincipal(principalEntities)).andReturn(Collections.emptyList());
replay(privilegeDAO,userDAO,groupDAO,principalDAO,permissionDAO,resourceDAO,privilegeEntity,resourceEntity,userEntity,principalEntity,permissionEntity,principalTypeEntity);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator("admin"));
PrivilegeResourceProvider provider=new ViewPrivilegeResourceProvider();
Set resources=provider.getResources(PropertyHelper.getReadRequest(),null);
Assert.assertEquals(1,resources.size());
Resource resource=resources.iterator().next();
Assert.assertEquals("VIEW.USER",resource.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_NAME_PROPERTY_ID));
Assert.assertEquals("View User",resource.getPropertyValue(AmbariPrivilegeResourceProvider.PERMISSION_LABEL_PROPERTY_ID));
Assert.assertEquals("joe",resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_NAME_PROPERTY_ID));
Assert.assertEquals("USER",resource.getPropertyValue(AmbariPrivilegeResourceProvider.PRINCIPAL_TYPE_PROPERTY_ID));
verify(privilegeDAO,userDAO,groupDAO,principalDAO,permissionDAO,resourceDAO,privilegeEntity,resourceEntity,userEntity,principalEntity,permissionEntity,principalTypeEntity);
}
Class: org.apache.ambari.server.controller.internal.WidgetLayoutResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* @throws Exception
*/
@Test public void testGetSingleResource() throws Exception {
Request request=PropertyHelper.getReadRequest(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_ID_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID,WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID);
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getClusterById(1L)).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
Predicate predicate=new PredicateBuilder().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_ID_PROPERTY_ID).equals("1").and().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID).equals("username").toPredicate();
expect(dao.findById(1L)).andReturn(getMockEntities().get(0));
replay(amc,clusters,cluster,dao);
WidgetLayoutResourceProvider provider=createProvider(amc);
Set results=provider.getResources(request,predicate);
assertEquals(1,results.size());
Resource r=results.iterator().next();
Assert.assertEquals("section0",r.getPropertyValue(WidgetLayoutResourceProvider.WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID));
Assert.assertEquals("CLUSTER",r.getPropertyValue(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID));
Assert.assertEquals("username",r.getPropertyValue(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID));
Assert.assertEquals("displ_name",r.getPropertyValue(WidgetLayoutResourceProvider.WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID));
Assert.assertEquals("layout name0",r.getPropertyValue(WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID));
Assert.assertEquals("[]",r.getPropertyValue(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID).toString());
}
InternalCallVerifier EqualityVerifier
/**
* @throws Exception
*/
@Test public void testGetResourcesNoPredicate() throws Exception {
WidgetLayoutResourceProvider provider=createProvider(null);
Request request=PropertyHelper.getReadRequest("WidgetLayouts/id");
Set results=provider.getResources(request,null);
assertEquals(0,results.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testCreateResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).anyTimes();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
WidgetEntity widgetEntity=new WidgetEntity();
widgetEntity.setId(1l);
widgetEntity.setListWidgetLayoutUserWidgetEntity(new ArrayList());
expect(widgetDAO.findById(anyLong())).andReturn(widgetEntity).anyTimes();
replay(amc,clusters,cluster,dao,widgetDAO);
WidgetLayoutResourceProvider provider=createProvider(amc);
Map requestProps=new HashMap();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID,"layout_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID,"display_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID,"section_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID,"admin");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID,"CLUSTER");
Set widgetsInfo=new LinkedHashSet();
Map widget=new HashMap();
widget.put("id","1");
widgetsInfo.add(widget);
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID,widgetsInfo);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
RequestStatus requestStatus=provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
WidgetLayoutEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
Assert.assertEquals(1,requestStatus.getAssociatedResources().size());
Assert.assertEquals(Long.valueOf(1),entity.getClusterId());
Assert.assertEquals("CLUSTER",entity.getScope());
Assert.assertEquals("layout_name",entity.getLayoutName());
Assert.assertEquals("display_name",entity.getDisplayName());
Assert.assertEquals("section_name",entity.getSectionName());
Assert.assertEquals("admin",entity.getUserName());
Assert.assertNotNull(entity.getListWidgetLayoutUserWidgetEntity());
Assert.assertNotNull(entity.getListWidgetLayoutUserWidgetEntity().get(0));
Assert.assertNotNull(entity.getListWidgetLayoutUserWidgetEntity().get(0).getWidget().getListWidgetLayoutUserWidgetEntity());
verify(amc,clusters,cluster,dao,widgetDAO);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testUpdateResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).atLeastOnce();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
WidgetEntity widgetEntity=new WidgetEntity();
widgetEntity.setId(1L);
widgetEntity.setListWidgetLayoutUserWidgetEntity(new ArrayList());
WidgetEntity widgetEntity2=new WidgetEntity();
widgetEntity2.setId(2L);
widgetEntity2.setListWidgetLayoutUserWidgetEntity(new ArrayList());
expect(widgetDAO.findById(1L)).andReturn(widgetEntity).atLeastOnce();
replay(amc,clusters,cluster,dao,widgetDAO);
Map requestProps=new HashMap();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID,"layout_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID,"display_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID,"section_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID,"admin");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID,"CLUSTER");
Set widgetsInfo=new LinkedHashSet();
Map widget=new HashMap();
widget.put("id","1");
widgetsInfo.add(widget);
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID,widgetsInfo);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
WidgetLayoutResourceProvider provider=createProvider(amc);
provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
WidgetLayoutEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
Predicate predicate=new PredicateBuilder().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_ID_PROPERTY_ID).equals("1").and().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID).equals("username").toPredicate();
entity.setId(Long.valueOf(1));
String oldLayoutName=entity.getLayoutName();
String oldScope=entity.getScope();
resetToStrict(dao,widgetDAO);
expect(dao.findById(1L)).andReturn(entity).anyTimes();
expect(dao.mergeWithFlush((WidgetLayoutEntity)anyObject())).andReturn(entity).anyTimes();
expect(widgetDAO.merge(widgetEntity)).andReturn(widgetEntity).anyTimes();
expect(widgetDAO.findById(2L)).andReturn(widgetEntity2).anyTimes();
replay(dao,widgetDAO);
requestProps=new HashMap();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID,"layout_name_new");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID,"USER");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_ID_PROPERTY_ID,"1");
widget.put("id","2");
widgetsInfo.add(widget);
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID,widgetsInfo);
request=PropertyHelper.getUpdateRequest(requestProps,null);
provider.updateResources(request,predicate);
Assert.assertFalse(oldLayoutName.equals(entity.getLayoutName()));
Assert.assertFalse(oldScope.equals(entity.getScope()));
verify(amc,clusters,cluster,dao,widgetDAO);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testDeleteResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).anyTimes();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
replay(amc,clusters,cluster,dao);
WidgetLayoutResourceProvider provider=createProvider(amc);
Map requestProps=new HashMap();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_LAYOUT_NAME_PROPERTY_ID,"layout_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_DISPLAY_NAME_PROPERTY_ID,"display_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SECTION_NAME_PROPERTY_ID,"section_name");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID,"admin");
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_SCOPE_PROPERTY_ID,"CLUSTER");
Set widgetsInfo=new LinkedHashSet();
requestProps.put(WidgetLayoutResourceProvider.WIDGETLAYOUT_WIDGETS_PROPERTY_ID,widgetsInfo);
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
WidgetLayoutEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
Predicate predicate=new PredicateBuilder().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_ID_PROPERTY_ID).equals("1").and().property(WidgetLayoutResourceProvider.WIDGETLAYOUT_USERNAME_PROPERTY_ID).equals("username").toPredicate();
entity.setId(Long.valueOf(1));
resetToStrict(dao);
expect(dao.findById(1L)).andReturn(entity).anyTimes();
dao.remove(capture(entityCapture));
expectLastCall();
replay(dao);
provider.deleteResources(predicate);
WidgetLayoutEntity entity1=entityCapture.getValue();
Assert.assertEquals(Long.valueOf(1),entity1.getId());
verify(amc,clusters,cluster,dao);
}
Class: org.apache.ambari.server.controller.internal.WidgetResourceProviderTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testUpdateResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).atLeastOnce();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
replay(amc,clusters,cluster,dao);
Map requestProps=new HashMap();
requestProps.put(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID,"widget name");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_TYPE_PROPERTY_ID,"GAUGE");
requestProps.put(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID,"admin");
requestProps.put(WidgetResourceProvider.WIDGET_SCOPE_PROPERTY_ID,"USER");
Set testSet=new LinkedHashSet();
HashMap testMap=new HashMap();
testMap.put("name","value");
testMap.put("name2","value2");
testSet.add(testMap);
requestProps.put(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property1","value1");
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property2","value2");
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
WidgetResourceProvider provider=createProvider(amc);
provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
WidgetEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
Predicate predicate=new PredicateBuilder().property(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(WidgetResourceProvider.WIDGET_ID_PROPERTY_ID).equals("1").and().property(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID).equals("username").toPredicate();
entity.setId(Long.valueOf(1));
String oldMetrics=entity.getMetrics();
String oldProperties=entity.getProperties();
String oldName=entity.getWidgetName();
resetToStrict(dao);
expect(dao.findById(1L)).andReturn(entity).anyTimes();
expect(dao.merge((WidgetEntity)anyObject())).andReturn(entity).anyTimes();
replay(dao);
requestProps=new HashMap();
requestProps.put(WidgetResourceProvider.WIDGET_ID_PROPERTY_ID,"1");
requestProps.put(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID,"widget name2");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_TYPE_PROPERTY_ID,"GAUGE");
requestProps.put(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID,"admin");
requestProps.put(WidgetResourceProvider.WIDGET_SCOPE_PROPERTY_ID,"USER");
testSet=new LinkedHashSet();
testMap=new HashMap();
testMap.put("name","new_value");
testMap.put("new_name","new_value2");
testSet.add(testMap);
requestProps.put(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property1","new_value1");
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/new_property","new_value2");
request=PropertyHelper.getUpdateRequest(requestProps,null);
provider.updateResources(request,predicate);
Assert.assertFalse(oldName.equals(entity.getWidgetName()));
Assert.assertFalse(oldMetrics.equals(entity.getMetrics()));
Assert.assertFalse(oldProperties.equals(entity.getProperties()));
Assert.assertEquals("[{\"name\":\"new_value\",\"new_name\":\"new_value2\"}]",entity.getMetrics());
Assert.assertTrue(CollectionPresentationUtils.isJsonsEquals("{\"new_property\":\"new_value2\",\"property1\":\"new_value1\"}",entity.getProperties()));
Assert.assertEquals("widget name2",entity.getWidgetName());
Assert.assertEquals(null,entity.getDefaultSectionName());
verify(amc,clusters,cluster,dao);
}
InternalCallVerifier EqualityVerifier
/**
* @throws Exception
*/
@Test public void testGetResourcesNoPredicate() throws Exception {
WidgetResourceProvider provider=createProvider(null);
Request request=PropertyHelper.getReadRequest("Widgets/id");
Set results=provider.getResources(request,null);
assertEquals(0,results.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testDeleteResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).anyTimes();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
replay(amc,clusters,cluster,dao);
WidgetResourceProvider provider=createProvider(amc);
Map requestProps=new HashMap();
requestProps.put(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID,"widget name");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_TYPE_PROPERTY_ID,"GAUGE");
requestProps.put(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID,"admin");
requestProps.put(WidgetResourceProvider.WIDGET_SCOPE_PROPERTY_ID,"USER");
Set testSet=new LinkedHashSet();
HashMap testMap=new HashMap();
testMap.put("name","value");
testMap.put("name2","value2");
testSet.add(testMap);
requestProps.put(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property1","value1");
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property2","value2");
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
WidgetEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
Predicate predicate=new PredicateBuilder().property(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(WidgetResourceProvider.WIDGET_ID_PROPERTY_ID).equals("1").and().property(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID).equals("username").toPredicate();
entity.setId(Long.valueOf(1));
resetToStrict(dao);
expect(dao.findById(1L)).andReturn(entity).anyTimes();
dao.remove(capture(entityCapture));
expectLastCall();
replay(dao);
provider.deleteResources(predicate);
WidgetEntity entity1=entityCapture.getValue();
Assert.assertEquals(Long.valueOf(1),entity1.getId());
verify(amc,clusters,cluster,dao);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* @throws Exception
*/
@Test public void testGetSingleResource() throws Exception {
Request request=PropertyHelper.getReadRequest(WidgetResourceProvider.WIDGET_ID_PROPERTY_ID,WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID,WidgetResourceProvider.WIDGET_WIDGET_TYPE_PROPERTY_ID,WidgetResourceProvider.WIDGET_TIME_CREATED_PROPERTY_ID,WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID,WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID,WidgetResourceProvider.WIDGET_DESCRIPTION_PROPERTY_ID,WidgetResourceProvider.WIDGET_SCOPE_PROPERTY_ID,WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID,WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID,WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID);
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getClusterById(1L)).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
Predicate predicate=new PredicateBuilder().property(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID).equals("c1").and().property(WidgetResourceProvider.WIDGET_ID_PROPERTY_ID).equals("1").and().property(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID).equals("username").toPredicate();
expect(dao.findById(1L)).andReturn(getMockEntities("CLUSTER").get(0));
replay(amc,clusters,cluster,dao);
WidgetResourceProvider provider=createProvider(amc);
Set results=provider.getResources(request,predicate);
assertEquals(1,results.size());
Resource r=results.iterator().next();
Assert.assertEquals("GAUGE",r.getPropertyValue(WidgetResourceProvider.WIDGET_WIDGET_TYPE_PROPERTY_ID));
Assert.assertEquals("CLUSTER",r.getPropertyValue(WidgetResourceProvider.WIDGET_SCOPE_PROPERTY_ID));
Assert.assertEquals("username",r.getPropertyValue(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID));
Assert.assertEquals("widget name",r.getPropertyValue(WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID));
Object metrics=r.getPropertyValue(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID);
Assert.assertEquals("[{\"widget_id\":\"metrics/jvm/HeapMemoryUsed\"," + "\"host_component_criteria\":\"host_components/metrics/dfs/FSNamesystem/HAState\\u003dactive\"," + "\"service_name\":\"HDFS\",\"component_name\":\"NAMENODE\","+ "\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[used]\",\"category\":\"\"},"+ "{\"widget_id\":\"metrics/jvm/HeapMemoryMax\","+ "\"host_component_criteria\":\"host_components/metrics/dfs/FSNamesystem/HAState\\u003dactive\","+ "\"service_name\":\"HDFS\",\"component_name\":\"NAMENODE\","+ "\"name\":\"java.lang:type\\u003dMemory.HeapMemoryUsage[max]\","+ "\"category\":\"\"}]",r.getPropertyValue(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID));
Assert.assertEquals("[{\"name\":\"NameNode Heap\"," + "\"value\":\"${java.lang:type\\u003dMemory.HeapMemoryUsage[used] / " + "java.lang:type\\u003dMemory.HeapMemoryUsage[max]}\"}]",r.getPropertyValue(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID));
Assert.assertEquals("{\"name\":\"value\"}",r.getPropertyValue(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testCreateResources() throws Exception {
AmbariManagementController amc=createMock(AmbariManagementController.class);
Clusters clusters=createMock(Clusters.class);
Cluster cluster=createMock(Cluster.class);
expect(amc.getClusters()).andReturn(clusters).atLeastOnce();
expect(clusters.getCluster((String)anyObject())).andReturn(cluster).atLeastOnce();
expect(cluster.getClusterId()).andReturn(Long.valueOf(1)).anyTimes();
Capture entityCapture=new Capture();
dao.create(capture(entityCapture));
expectLastCall();
replay(amc,clusters,cluster,dao);
WidgetResourceProvider provider=createProvider(amc);
Map requestProps=new HashMap();
requestProps.put(WidgetResourceProvider.WIDGET_CLUSTER_NAME_PROPERTY_ID,"c1");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_NAME_PROPERTY_ID,"widget name");
requestProps.put(WidgetResourceProvider.WIDGET_WIDGET_TYPE_PROPERTY_ID,"GAUGE");
requestProps.put(WidgetResourceProvider.WIDGET_AUTHOR_PROPERTY_ID,"admin");
requestProps.put(WidgetResourceProvider.WIDGET_SCOPE_PROPERTY_ID,"USER");
Set testSet=new LinkedHashSet();
HashMap testMap=new HashMap();
testMap.put("name","value");
testMap.put("name2","value2");
testSet.add(testMap);
requestProps.put(WidgetResourceProvider.WIDGET_METRICS_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_VALUES_PROPERTY_ID,testSet);
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property1","value1");
requestProps.put(WidgetResourceProvider.WIDGET_PROPERTIES_PROPERTY_ID + "/property2","value2");
Request request=PropertyHelper.getCreateRequest(Collections.singleton(requestProps),null);
RequestStatus requestStatus=provider.createResources(request);
Assert.assertTrue(entityCapture.hasCaptured());
WidgetEntity entity=entityCapture.getValue();
Assert.assertNotNull(entity);
Assert.assertEquals(1,requestStatus.getAssociatedResources().size());
Assert.assertEquals(Long.valueOf(1),entity.getClusterId());
Assert.assertEquals("USER",entity.getScope());
Assert.assertEquals("widget name",entity.getWidgetName());
Assert.assertEquals(null,entity.getDefaultSectionName());
Assert.assertEquals("GAUGE",entity.getWidgetType());
Assert.assertEquals("admin",entity.getAuthor());
Assert.assertEquals("[{\"name\":\"value\",\"name2\":\"value2\"}]",entity.getMetrics());
Assert.assertEquals("[{\"name\":\"value\",\"name2\":\"value2\"}]",entity.getWidgetValues());
Assert.assertEquals("{\"property2\":\"value2\",\"property1\":\"value1\"}",entity.getProperties());
verify(amc,clusters,cluster,dao);
}
Class: org.apache.ambari.server.controller.internal.WorkflowResourceProviderTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set expected=new HashSet();
expected.add(createWorkflowResponse("Cluster100","workflow1"));
expected.add(createWorkflowResponse("Cluster100","workflow2"));
expected.add(createWorkflowResponse("Cluster100","workflow3"));
Resource.Type type=Resource.Type.Workflow;
Set propertyIds=PropertyHelper.getPropertyIds(type);
WorkflowFetcher workflowFetcher=createMock(WorkflowFetcher.class);
expect(workflowFetcher.fetchWorkflows(propertyIds,"Cluster100",null)).andReturn(expected).once();
replay(workflowFetcher);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(type);
ResourceProvider provider=new WorkflowResourceProvider(propertyIds,keyPropertyIds,workflowFetcher);
Request request=PropertyHelper.getReadRequest(propertyIds);
Predicate predicate=new PredicateBuilder().property(WorkflowResourceProvider.WORKFLOW_CLUSTER_NAME_PROPERTY_ID).equals("Cluster100").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(3,resources.size());
Set names=new HashSet();
for ( Resource resource : resources) {
String clusterName=(String)resource.getPropertyValue(WorkflowResourceProvider.WORKFLOW_CLUSTER_NAME_PROPERTY_ID);
Assert.assertEquals("Cluster100",clusterName);
names.add((String)resource.getPropertyValue(WorkflowResourceProvider.WORKFLOW_ID_PROPERTY_ID));
}
for ( Resource resource : expected) {
Assert.assertTrue(names.contains(resource.getPropertyValue(WorkflowResourceProvider.WORKFLOW_ID_PROPERTY_ID)));
}
verify(workflowFetcher);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testWorkflowFetcher() throws SystemException, UnsupportedPropertyException, NoSuchResourceException, NoSuchParentResourceException {
Set requestedIds=new HashSet();
requestedIds.add(WorkflowResourceProvider.WORKFLOW_ID_PROPERTY_ID);
Map keyPropertyIds=PropertyHelper.getKeyPropertyIds(Resource.Type.Workflow);
ResourceProvider provider=new TestWorkflowResourceProvider(requestedIds,keyPropertyIds);
Request request=PropertyHelper.getReadRequest(requestedIds);
Predicate predicate=new PredicateBuilder().property(WorkflowResourceProvider.WORKFLOW_ID_PROPERTY_ID).equals("workflow1").toPredicate();
Set resources=provider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
for ( Resource resource : resources) {
String workflowId=(String)resource.getPropertyValue(WorkflowResourceProvider.WORKFLOW_ID_PROPERTY_ID);
Assert.assertEquals("workflow1",workflowId);
}
}
Class: org.apache.ambari.server.controller.metrics.ganglia.GangliaMetricTest InternalCallVerifier BooleanVerifier
/**
* Test of setDatapoints method, of class GangliaMetric.
*/
@Test public void testSetDatapointsOfPercentValue(){
System.out.println("setDatapoints");
List listTemporalMetrics=new ArrayList();
GangliaMetric instance=new GangliaMetric();
instance.setDs_name("dsName");
instance.setCluster_name("c1");
instance.setHost_name("localhost");
instance.setMetric_name("cpu_wio");
listTemporalMetrics.add(new GangliaMetric.TemporalMetric("111.0",new Long(1362440880)));
listTemporalMetrics.add(new GangliaMetric.TemporalMetric("11.0",new Long(1362440881)));
listTemporalMetrics.add(new GangliaMetric.TemporalMetric("100.0",new Long(1362440882)));
instance.setDatapointsFromList(listTemporalMetrics);
assertTrue(instance.getDatapoints().length == 2);
}
Class: org.apache.ambari.server.controller.metrics.ganglia.GangliaReportPropertyProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateResources() throws Exception {
TestStreamProvider streamProvider=new TestStreamProvider("temporal_ganglia_report_data.json");
TestGangliaHostProvider hostProvider=new TestGangliaHostProvider();
GangliaReportPropertyProvider propertyProvider=new GangliaReportPropertyProvider(PropertyHelper.getMetricPropertyIds(Resource.Type.Cluster),streamProvider,configuration,hostProvider,CLUSTER_NAME_PROPERTY_ID);
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(PROPERTY_ID,new TemporalInfoImpl(10L,20L,1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID),temporalInfoMap);
Assert.assertEquals(1,propertyProvider.populateResources(Collections.singleton(resource),request,null).size());
String expected=(configuration.isGangliaSSL() ? "https" : "http") + "://domU-12-31-39-0E-34-E1.compute-1.internal/ganglia/graph.php?g=load_report&json=1";
Assert.assertEquals(expected,streamProvider.getLastSpec());
Assert.assertEquals(2,PropertyHelper.getProperties(resource).size());
Assert.assertNotNull(resource.getPropertyValue(PROPERTY_ID));
}
Class: org.apache.ambari.server.controller.metrics.timeline.AMSReportPropertyProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateResources() throws Exception {
TestStreamProvider streamProvider=new TestStreamProvider(SINGLE_HOST_METRICS_FILE_PATH);
injectCacheEntryFactoryWithStreamProvider(streamProvider);
TestMetricHostProvider metricHostProvider=new TestMetricHostProvider();
ComponentSSLConfiguration sslConfiguration=mock(ComponentSSLConfiguration.class);
Map> propertyIds=PropertyHelper.getMetricPropertyIds(Resource.Type.Cluster);
AMSReportPropertyProvider propertyProvider=new AMSReportPropertyProvider(propertyIds,streamProvider,sslConfiguration,cacheProvider,metricHostProvider,CLUSTER_NAME_PROPERTY_ID);
String propertyId=PropertyHelper.getPropertyId("metrics/cpu","User");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(propertyId,new TemporalInfoImpl(1416445244800L,1416448936474L,1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(propertyId),temporalInfoMap);
Set resources=propertyProvider.populateResources(Collections.singleton(resource),request,null);
Assert.assertEquals(1,resources.size());
Resource res=resources.iterator().next();
Map properties=PropertyHelper.getProperties(resources.iterator().next());
Assert.assertNotNull(properties);
URIBuilder uriBuilder=AMSPropertyProvider.getAMSUriBuilder("localhost",8188);
uriBuilder.addParameter("metricNames","cpu_user");
uriBuilder.addParameter("appId","HOST");
uriBuilder.addParameter("startTime","1416445244800");
uriBuilder.addParameter("endTime","1416448936474");
Assert.assertEquals(uriBuilder.toString(),streamProvider.getLastSpec());
Number[][] val=(Number[][])res.getPropertyValue("metrics/cpu/User");
Assert.assertEquals(111,val.length);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPopulateResourceWithAggregateFunction() throws Exception {
TestStreamProvider streamProvider=new TestStreamProvider(AGGREGATE_CLUSTER_METRICS_FILE_PATH);
injectCacheEntryFactoryWithStreamProvider(streamProvider);
TestMetricHostProvider metricHostProvider=new TestMetricHostProvider();
ComponentSSLConfiguration sslConfiguration=mock(ComponentSSLConfiguration.class);
Map> propertyIds=PropertyHelper.getMetricPropertyIds(Resource.Type.Cluster);
AMSReportPropertyProvider propertyProvider=new AMSReportPropertyProvider(propertyIds,streamProvider,sslConfiguration,cacheProvider,metricHostProvider,CLUSTER_NAME_PROPERTY_ID);
String propertyId=PropertyHelper.getPropertyId("metrics/cpu","User._sum");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(CLUSTER_NAME_PROPERTY_ID,"c1");
Map temporalInfoMap=new HashMap();
temporalInfoMap.put(propertyId,new TemporalInfoImpl(1432033257812L,1432035927922L,1L));
Request request=PropertyHelper.getReadRequest(Collections.singleton(propertyId),temporalInfoMap);
Set resources=propertyProvider.populateResources(Collections.singleton(resource),request,null);
Assert.assertEquals(1,resources.size());
Resource res=resources.iterator().next();
Map properties=PropertyHelper.getProperties(resources.iterator().next());
Assert.assertNotNull(properties);
URIBuilder uriBuilder=AMSPropertyProvider.getAMSUriBuilder("localhost",8188);
uriBuilder.addParameter("metricNames","cpu_user._sum");
uriBuilder.addParameter("appId","HOST");
uriBuilder.addParameter("startTime","1432033257812");
uriBuilder.addParameter("endTime","1432035927922");
Assert.assertEquals(uriBuilder.toString(),streamProvider.getLastSpec());
Number[][] val=(Number[][])res.getPropertyValue("metrics/cpu/User._sum");
Assert.assertEquals(90,val.length);
}
Class: org.apache.ambari.server.controller.metrics.timeline.MetricsPaddingMethodTest InternalCallVerifier EqualityVerifier
@Test public void testPaddingWithWithVariousPrecisionData() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.ZEROS);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
long seconds=1000;
long minute=60 * seconds;
long hour=60 * minute;
long day=24 * hour;
inputValues.clear();
for (int i=5; i >= 1; i--) {
inputValues.put(now - i * minute,i + 0.0);
}
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 2 * hour - 1 * minute,now,null);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(122,values.size());
Assert.assertEquals(new Long(now - 2 * hour - 1 * minute),values.keySet().iterator().next());
inputValues.clear();
for (int i=5; i >= 1; i--) {
inputValues.put(now - i * hour,i + 0.0);
}
timelineMetric.setMetricValues(inputValues);
temporalInfo=getTemporalInfo(now - 1 * day - 1 * hour,now,null);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(26,values.size());
Assert.assertEquals(new Long(now - 1 * day - 1 * hour),values.keySet().iterator().next());
inputValues.clear();
inputValues.put(now - day,1.0);
timelineMetric.setMetricValues(inputValues);
temporalInfo=getTemporalInfo(now - 40 * day,now,null);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(41,values.size());
Assert.assertEquals(new Long(now - 40 * day),values.keySet().iterator().next());
}
InternalCallVerifier EqualityVerifier
@Test public void testPaddingWithStepProvided() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.ZEROS);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
inputValues.put(now - 1000,1.0d);
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 10000,now,1000l);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(11,values.size());
Assert.assertEquals(new Long(now - 10000),values.keySet().iterator().next());
Assert.assertEquals(new Long(now),values.descendingKeySet().iterator().next());
Assert.assertEquals(0.0,values.values().iterator().next());
}
InternalCallVerifier EqualityVerifier
@Test public void testPaddingWithNulls() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.NULLS);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
inputValues.put(now - 1000,1.0d);
inputValues.put(now - 2000,2.0d);
inputValues.put(now - 3000,3.0d);
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 10000,now,1l);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(11,values.size());
Assert.assertEquals(new Long(now - 10000),values.keySet().iterator().next());
Assert.assertEquals(new Long(now),values.descendingKeySet().iterator().next());
Assert.assertEquals(null,values.values().iterator().next());
}
InternalCallVerifier EqualityVerifier
@Test public void testNoPaddingRequested() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.NONE);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
inputValues.put(now - 100,1.0d);
inputValues.put(now - 200,2.0d);
inputValues.put(now - 300,3.0d);
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 1000,now,10l);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(3,values.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testPaddingWithNoPaddingNeeded() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.ZEROS);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
inputValues.put(now,0.0d);
inputValues.put(now - 1000,1.0d);
inputValues.put(now - 2000,2.0d);
inputValues.put(now - 3000,3.0d);
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 3000,now,1l);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(4,values.size());
Assert.assertEquals(new Long(now - 3000),values.keySet().iterator().next());
Assert.assertEquals(new Long(now),values.descendingKeySet().iterator().next());
}
InternalCallVerifier EqualityVerifier
@Test public void testPaddingWithZeros() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.ZEROS);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
inputValues.put(now - 1000,1.0d);
inputValues.put(now - 2000,2.0d);
inputValues.put(now - 3000,3.0d);
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 10000,now,1l);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(11,values.size());
Assert.assertEquals(new Long(now - 10000),values.keySet().iterator().next());
Assert.assertEquals(new Long(now),values.descendingKeySet().iterator().next());
Assert.assertEquals(0.0,values.values().iterator().next());
}
InternalCallVerifier EqualityVerifier
@Test public void testPaddingWithOneValue() throws Exception {
MetricsPaddingMethod paddingMethod=new MetricsPaddingMethod(MetricsPaddingMethod.PADDING_STRATEGY.ZEROS);
long now=System.currentTimeMillis();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("m1");
timelineMetric.setHostName("h1");
timelineMetric.setAppId("a1");
timelineMetric.setTimestamp(now);
TreeMap inputValues=new TreeMap();
inputValues.put(now - 1000,1.0d);
timelineMetric.setMetricValues(inputValues);
TemporalInfo temporalInfo=getTemporalInfo(now - 10000,now,null);
paddingMethod.applyPaddingStrategy(timelineMetric,temporalInfo);
TreeMap values=(TreeMap)timelineMetric.getMetricValues();
Assert.assertEquals(1,values.size());
Assert.assertEquals(new Long(now - 1000),values.keySet().iterator().next());
Assert.assertEquals(1.0,values.values().iterator().next());
}
Class: org.apache.ambari.server.controller.metrics.timeline.cache.TimelineMetricCacheSizingTest InternalCallVerifier BooleanVerifier
@Test public void testTimelineMetricCacheSizing() throws Exception {
Set metricNames=new HashSet<>();
String metric1="prefix1.suffix1.suffix2.actualNamePrefix.longMetricName1";
String metric2="prefix1.suffix1.suffix2.actualNamePrefix.longMetricName2";
String metric3="prefix1.suffix1.suffix2.actualNamePrefix.longMetricName3";
String metric4="prefix1.suffix1.suffix2.actualNamePrefix.longMetricName4";
String metric5="prefix1.suffix1.suffix2.actualNamePrefix.longMetricName5";
String metric6="prefix1.suffix1.suffix2.actualNamePrefix.longMetricName6";
metricNames.add(metric1);
metricNames.add(metric2);
metricNames.add(metric3);
metricNames.add(metric4);
metricNames.add(metric5);
metricNames.add(metric6);
long now=System.currentTimeMillis();
TemporalInfo temporalInfo=new TemporalInfoImpl(now - 1000,now,15);
TimelineAppMetricCacheKey key=new TimelineAppMetricCacheKey(metricNames,"KAFKA_BROKER",temporalInfo);
key.setSpec("http://104.196.94.129:6188/ws/v1/timeline/metrics?metricNames=" + "jvm.JvmMetrics.MemHeapCommittedM&appId=RESOURCEMANAGER&" + "startTime=1439522640000&endTime=1440127440000&precision=hours");
TimelineMetrics metrics=new TimelineMetrics();
metrics.getMetrics().add(getSampleTimelineMetric(metric1));
metrics.getMetrics().add(getSampleTimelineMetric(metric2));
metrics.getMetrics().add(getSampleTimelineMetric(metric3));
metrics.getMetrics().add(getSampleTimelineMetric(metric4));
metrics.getMetrics().add(getSampleTimelineMetric(metric5));
metrics.getMetrics().add(getSampleTimelineMetric(metric6));
TimelineMetricsCacheValue value=new TimelineMetricsCacheValue(now - 1000,now,metrics,null);
TimelineMetricsCacheSizeOfEngine customSizeOfEngine=new TimelineMetricsCacheSizeOfEngine();
long bytesFromReflectionEngine=reflectionSizeOf.deepSizeOf(50000,false,key).getCalculated() + reflectionSizeOf.deepSizeOf(50000,false,value).getCalculated();
long bytesFromCustomSizeOfEngine=customSizeOfEngine.sizeOf(key,value,null).getCalculated();
long sampleSizeInMB=bytesFromReflectionEngine / (1024 * 1024);
long discrepancyInKB=Math.abs(bytesFromCustomSizeOfEngine - bytesFromReflectionEngine) / 1024;
Assert.assertTrue("Sample size is " + sampleSizeInMB + ", expected to be"+ "greater that 10 MB",sampleSizeInMB > 10);
Assert.assertTrue("Discrepancy in values is " + discrepancyInKB + ", "+ "expected to be less than 10K. "+ "Bytes from reflection = "+ bytesFromReflectionEngine+ ", bytes from custom sizing engine = "+ bytesFromCustomSizeOfEngine,discrepancyInKB < 10);
}
Class: org.apache.ambari.server.controller.metrics.timeline.cache.TimelineMetricCacheTest APIUtilityVerifier InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testTimelineMetricCacheProviderGets() throws Exception {
Configuration configuration=createNiceMock(Configuration.class);
expect(configuration.getMetricCacheTTLSeconds()).andReturn(3600);
expect(configuration.getMetricCacheIdleSeconds()).andReturn(100);
expect(configuration.getMetricsCacheManagerHeapPercent()).andReturn("10%").anyTimes();
replay(configuration);
final long now=System.currentTimeMillis();
TimelineMetrics metrics=new TimelineMetrics();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("cpu_user");
timelineMetric.setAppId("app1");
TreeMap metricValues=new TreeMap();
metricValues.put(now + 100,1.0);
metricValues.put(now + 200,2.0);
metricValues.put(now + 300,3.0);
timelineMetric.setMetricValues(metricValues);
metrics.getMetrics().add(timelineMetric);
TimelineMetricCacheEntryFactory cacheEntryFactory=createMock(TimelineMetricCacheEntryFactory.class);
TimelineAppMetricCacheKey queryKey=new TimelineAppMetricCacheKey(Collections.singleton("cpu_user"),"app1",new TemporalInfoImpl(now,now + 1000,1));
TimelineMetricsCacheValue value=new TimelineMetricsCacheValue(now,now + 1000,metrics,null);
TimelineAppMetricCacheKey testKey=new TimelineAppMetricCacheKey(Collections.singleton("cpu_user"),"app1",new TemporalInfoImpl(now,now + 2000,1));
expect(cacheEntryFactory.createEntry(anyObject())).andReturn(value);
cacheEntryFactory.updateEntryValue(testKey,value);
expectLastCall().once();
replay(cacheEntryFactory);
TimelineMetricCacheProvider cacheProvider=createMockBuilder(TimelineMetricCacheProvider.class).addMockedMethod("createCacheConfiguration").withConstructor(configuration,cacheEntryFactory).createNiceMock();
expect(cacheProvider.createCacheConfiguration()).andReturn(createTestCacheConfiguration(configuration)).anyTimes();
replay(cacheProvider);
TimelineMetricCache cache=cacheProvider.getTimelineMetricsCache();
metrics=cache.getAppTimelineMetricsFromCache(queryKey);
List metricsList=metrics.getMetrics();
Assert.assertEquals(1,metricsList.size());
TimelineMetric metric=metricsList.iterator().next();
Assert.assertEquals("cpu_user",metric.getMetricName());
Assert.assertEquals("app1",metric.getAppId());
Assert.assertSame(metricValues,metric.getMetricValues());
metrics=cache.getAppTimelineMetricsFromCache(testKey);
metricsList=metrics.getMetrics();
Assert.assertEquals(1,metricsList.size());
Assert.assertEquals("cpu_user",metric.getMetricName());
Assert.assertEquals("app1",metric.getAppId());
Assert.assertSame(metricValues,metric.getMetricValues());
verify(configuration,cacheEntryFactory);
}
InternalCallVerifier EqualityVerifier
@Test public void testSelfPopulatingCacheUpdates() throws Exception {
UpdatingCacheEntryFactory cacheEntryFactory=createMock(UpdatingCacheEntryFactory.class);
StringBuilder value=new StringBuilder("b");
expect(cacheEntryFactory.createEntry("a")).andReturn(value);
cacheEntryFactory.updateEntryValue("a",value);
expectLastCall().andAnswer(new IAnswer(){
@Override public Object answer() throws Throwable {
String key=(String)getCurrentArguments()[0];
StringBuilder value=(StringBuilder)getCurrentArguments()[1];
System.out.println("key = " + key + ", value = "+ value);
value.append("c");
return null;
}
}
);
replay(cacheEntryFactory);
net.sf.ehcache.config.Configuration managerConfig=new net.sf.ehcache.config.Configuration();
managerConfig.setMaxBytesLocalHeap("10%");
CacheManager manager=CacheManager.create(managerConfig);
Cache cache=new Cache("test",0,false,false,10000,10000);
UpdatingSelfPopulatingCache testCache=new UpdatingSelfPopulatingCache(cache,cacheEntryFactory);
manager.addCache(testCache);
Assert.assertEquals("b",testCache.get("a").getObjectValue().toString());
Assert.assertEquals("bc",testCache.get("a").getObjectValue().toString());
verify(cacheEntryFactory);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testTimelineMetricCacheTimeseriesUpdates() throws Exception {
Configuration configuration=createNiceMock(Configuration.class);
expect(configuration.getMetricsRequestConnectTimeoutMillis()).andReturn(10000);
expect(configuration.getMetricsRequestReadTimeoutMillis()).andReturn(10000);
expect(configuration.getMetricsRequestIntervalReadTimeoutMillis()).andReturn(10000);
expect(configuration.getMetricRequestBufferTimeCatchupInterval()).andReturn(0l);
replay(configuration);
TimelineMetricCacheEntryFactory factory=createMockBuilder(TimelineMetricCacheEntryFactory.class).withConstructor(configuration).createMock();
replay(factory);
long now=System.currentTimeMillis();
final TimelineMetric timelineMetric1=new TimelineMetric();
timelineMetric1.setMetricName("cpu_user");
timelineMetric1.setAppId("app1");
TreeMap metricValues=new TreeMap();
metricValues.put(now - 100,1.0);
metricValues.put(now - 200,2.0);
metricValues.put(now - 300,3.0);
timelineMetric1.setMetricValues(metricValues);
final TimelineMetric timelineMetric2=new TimelineMetric();
timelineMetric2.setMetricName("cpu_nice");
timelineMetric2.setAppId("app1");
metricValues=new TreeMap();
metricValues.put(now + 400,1.0);
metricValues.put(now + 500,2.0);
metricValues.put(now + 600,3.0);
timelineMetric2.setMetricValues(metricValues);
TimelineMetrics existingMetrics=new TimelineMetrics();
existingMetrics.getMetrics().add(timelineMetric1);
existingMetrics.getMetrics().add(timelineMetric2);
TimelineMetricsCacheValue existingMetricValue=new TimelineMetricsCacheValue(now - 1000,now + 1000,existingMetrics,null);
TimelineMetrics newMetrics=new TimelineMetrics();
TimelineMetric timelineMetric3=new TimelineMetric();
timelineMetric3.setMetricName("cpu_user");
timelineMetric3.setAppId("app1");
metricValues=new TreeMap();
metricValues.put(now + 1400,1.0);
metricValues.put(now + 1500,2.0);
metricValues.put(now + 1600,3.0);
timelineMetric3.setMetricValues(metricValues);
newMetrics.getMetrics().add(timelineMetric3);
factory.updateTimelineMetricsInCache(newMetrics,existingMetricValue,now,now + 2000,false);
Assert.assertEquals(2,existingMetricValue.getTimelineMetrics().getMetrics().size());
TimelineMetric newMetric1=null;
TimelineMetric newMetric2=null;
for ( TimelineMetric metric : existingMetricValue.getTimelineMetrics().getMetrics()) {
if (metric.getMetricName().equals("cpu_user")) {
newMetric1=metric;
}
if (metric.getMetricName().equals("cpu_nice")) {
newMetric2=metric;
}
}
Assert.assertNotNull(newMetric1);
Assert.assertNotNull(newMetric2);
Assert.assertEquals(3,newMetric1.getMetricValues().size());
Assert.assertEquals(3,newMetric2.getMetricValues().size());
Map newMetricsMap=newMetric1.getMetricValues();
Iterator metricKeyIterator=newMetricsMap.keySet().iterator();
Assert.assertEquals(now + 1400,metricKeyIterator.next().longValue());
Assert.assertEquals(now + 1500,metricKeyIterator.next().longValue());
Assert.assertEquals(now + 1600,metricKeyIterator.next().longValue());
verify(configuration,factory);
}
InternalCallVerifier BooleanVerifier
@Test public void testEqualsOnKeys(){
long now=System.currentTimeMillis();
TemporalInfo temporalInfo=new TemporalInfoImpl(now - 1000,now,1);
TimelineAppMetricCacheKey key1=new TimelineAppMetricCacheKey(new HashSet(){
{
add("cpu_num._avg");
add("proc_run._avg");
}
}
,"HOST",temporalInfo);
TimelineAppMetricCacheKey key2=new TimelineAppMetricCacheKey(new HashSet(){
{
add("cpu_num._avg");
}
}
,"HOST",temporalInfo);
Assert.assertFalse(key1.equals(key2));
Assert.assertFalse(key2.equals(key1));
key2.getMetricNames().add("proc_run._avg");
Assert.assertTrue(key1.equals(key2));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testTimelineMetricCachePrecisionUpdates() throws Exception {
Configuration configuration=createNiceMock(Configuration.class);
expect(configuration.getMetricCacheTTLSeconds()).andReturn(3600);
expect(configuration.getMetricCacheIdleSeconds()).andReturn(100);
expect(configuration.getMetricsCacheManagerHeapPercent()).andReturn("10%").anyTimes();
expect(configuration.getMetricRequestBufferTimeCatchupInterval()).andReturn(1000l).anyTimes();
replay(configuration);
final long now=System.currentTimeMillis();
long second=1000;
long min=60 * second;
long hour=60 * min;
long day=24 * hour;
long year=365 * day;
Map valueMap=new HashMap();
TimelineMetric timelineMetric=new TimelineMetric();
timelineMetric.setMetricName("cpu_user");
timelineMetric.setAppId("app1");
TreeMap metricValues=new TreeMap();
for (long i=1 * year - 1 * day; i >= 0; i-=1 * day) {
metricValues.put(now - i,1.0);
}
timelineMetric.setMetricValues(metricValues);
valueMap.put("cpu_user",timelineMetric);
List timelineMetricList=new ArrayList<>();
timelineMetricList.add(timelineMetric);
TimelineMetrics metrics=new TimelineMetrics();
metrics.setMetrics(timelineMetricList);
TimelineAppMetricCacheKey key=new TimelineAppMetricCacheKey(Collections.singleton("cpu_user"),"app1",new TemporalInfoImpl(now - 1 * year,now,1));
key.setSpec("");
Map newValueMap=new HashMap();
TimelineMetric newTimelineMetric=new TimelineMetric();
newTimelineMetric.setMetricName("cpu_user");
newTimelineMetric.setAppId("app1");
TreeMap newMetricValues=new TreeMap();
for (long i=1 * hour; i <= 2 * day; i+=hour) {
newMetricValues.put(now - 1 * day + i,2.0);
}
newTimelineMetric.setMetricValues(newMetricValues);
newValueMap.put("cpu_user",newTimelineMetric);
List newTimelineMetricList=new ArrayList<>();
newTimelineMetricList.add(newTimelineMetric);
TimelineMetrics newMetrics=new TimelineMetrics();
newMetrics.setMetrics(newTimelineMetricList);
TimelineAppMetricCacheKey newKey=new TimelineAppMetricCacheKey(Collections.singleton("cpu_user"),"app1",new TemporalInfoImpl(now - 1 * day,now + 2 * day,1));
newKey.setSpec("");
MetricsRequestHelper metricsRequestHelperForGets=createMock(MetricsRequestHelper.class);
expect(metricsRequestHelperForGets.fetchTimelineMetrics(EasyMock.isA(URIBuilder.class),anyLong(),anyLong())).andReturn(metrics).andReturn(newMetrics);
replay(metricsRequestHelperForGets);
TimelineMetricCacheEntryFactory cacheEntryFactory=createMockBuilder(TimelineMetricCacheEntryFactory.class).withConstructor(configuration).createMock();
Field requestHelperField=TimelineMetricCacheEntryFactory.class.getDeclaredField("requestHelperForGets");
requestHelperField.setAccessible(true);
requestHelperField.set(cacheEntryFactory,metricsRequestHelperForGets);
requestHelperField=TimelineMetricCacheEntryFactory.class.getDeclaredField("requestHelperForUpdates");
requestHelperField.setAccessible(true);
requestHelperField.set(cacheEntryFactory,metricsRequestHelperForGets);
replay(cacheEntryFactory);
TimelineMetricCacheProvider cacheProvider=createMockBuilder(TimelineMetricCacheProvider.class).addMockedMethod("createCacheConfiguration").withConstructor(configuration,cacheEntryFactory).createNiceMock();
expect(cacheProvider.createCacheConfiguration()).andReturn(createTestCacheConfiguration(configuration)).anyTimes();
replay(cacheProvider);
TimelineMetricCache cache=cacheProvider.getTimelineMetricsCache();
metrics=cache.getAppTimelineMetricsFromCache(key);
List metricsList=metrics.getMetrics();
Assert.assertEquals(1,metricsList.size());
TimelineMetric metric=metricsList.iterator().next();
Assert.assertEquals("cpu_user",metric.getMetricName());
Assert.assertEquals("app1",metric.getAppId());
Assert.assertEquals(metricValues,metric.getMetricValues());
metrics=cache.getAppTimelineMetricsFromCache(newKey);
metricsList=metrics.getMetrics();
Assert.assertEquals(1,metricsList.size());
Assert.assertEquals("cpu_user",metric.getMetricName());
Assert.assertEquals("app1",metric.getAppId());
Assert.assertEquals(newMetricValues,metric.getMetricValues());
verify(configuration,metricsRequestHelperForGets,cacheEntryFactory);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test @SuppressWarnings("all") public void testCacheUpdateBoundsOnVariousRequestScenarios() throws Exception {
Configuration configuration=createNiceMock(Configuration.class);
expect(configuration.getMetricsRequestConnectTimeoutMillis()).andReturn(10000);
expect(configuration.getMetricsRequestReadTimeoutMillis()).andReturn(10000);
expect(configuration.getMetricsRequestIntervalReadTimeoutMillis()).andReturn(10000);
expect(configuration.getMetricRequestBufferTimeCatchupInterval()).andReturn(0l);
replay(configuration);
TimelineMetricCacheEntryFactory factory=createMockBuilder(TimelineMetricCacheEntryFactory.class).withConstructor(configuration).createMock();
replay(factory);
long now=System.currentTimeMillis();
final long existingSeriesStartTime=now - (3600 * 1000);
final long existingSeriesEndTime=now;
long requestedStartTime=existingSeriesStartTime + 60000;
long requestedEndTime=existingSeriesEndTime + 60000;
long newStartTime=factory.getRefreshRequestStartTime(existingSeriesStartTime,existingSeriesEndTime,requestedStartTime);
long newEndTime=factory.getRefreshRequestEndTime(existingSeriesStartTime,existingSeriesEndTime,requestedEndTime);
Assert.assertEquals(existingSeriesEndTime,newStartTime);
Assert.assertEquals(requestedEndTime,newEndTime);
requestedStartTime=existingSeriesEndTime + 60000;
requestedEndTime=existingSeriesEndTime + 60000 + 3600000;
newStartTime=factory.getRefreshRequestStartTime(existingSeriesStartTime,existingSeriesEndTime,requestedStartTime);
newEndTime=factory.getRefreshRequestEndTime(existingSeriesStartTime,existingSeriesEndTime,requestedEndTime);
Assert.assertEquals(requestedStartTime,newStartTime);
Assert.assertEquals(requestedEndTime,newEndTime);
requestedStartTime=existingSeriesStartTime - 60000;
requestedEndTime=existingSeriesEndTime + 60000;
newStartTime=factory.getRefreshRequestStartTime(existingSeriesStartTime,existingSeriesEndTime,requestedStartTime);
newEndTime=factory.getRefreshRequestEndTime(existingSeriesStartTime,existingSeriesEndTime,requestedEndTime);
Assert.assertEquals(requestedStartTime,newStartTime);
Assert.assertEquals(requestedEndTime,newEndTime);
requestedStartTime=existingSeriesStartTime - 3600000 - 60000;
requestedEndTime=existingSeriesStartTime - 60000;
newStartTime=factory.getRefreshRequestStartTime(existingSeriesStartTime,existingSeriesEndTime,requestedStartTime);
newEndTime=factory.getRefreshRequestEndTime(existingSeriesStartTime,existingSeriesEndTime,requestedEndTime);
Assert.assertEquals(requestedStartTime,newStartTime);
Assert.assertEquals(requestedEndTime,newEndTime);
requestedStartTime=existingSeriesStartTime + 60000;
requestedEndTime=existingSeriesEndTime - 60000;
newStartTime=factory.getRefreshRequestStartTime(existingSeriesStartTime,existingSeriesEndTime,requestedStartTime);
newEndTime=factory.getRefreshRequestEndTime(existingSeriesStartTime,existingSeriesEndTime,requestedEndTime);
Assert.assertEquals(newStartTime,existingSeriesEndTime);
Assert.assertEquals(newEndTime,existingSeriesStartTime);
verify(configuration,factory);
}
Class: org.apache.ambari.server.controller.predicate.AndPredicateTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId1=PropertyHelper.getPropertyId("category1","property1");
String propertyId2=PropertyHelper.getPropertyId("category1","property2");
String propertyId3=PropertyHelper.getPropertyId("category1","property3");
EqualsPredicate predicate1=new EqualsPredicate(propertyId1,"v1");
EqualsPredicate predicate2=new EqualsPredicate(propertyId2,"v2");
EqualsPredicate predicate3=new EqualsPredicate(propertyId3,"v3");
AndPredicate andPredicate=new AndPredicate(predicate1,predicate2,predicate3);
Set ids=andPredicate.getPropertyIds();
Assert.assertEquals(3,ids.size());
Assert.assertTrue(ids.contains(propertyId1));
Assert.assertTrue(ids.contains(propertyId2));
Assert.assertTrue(ids.contains(propertyId3));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId1=PropertyHelper.getPropertyId("category1","property1");
String propertyId2=PropertyHelper.getPropertyId("category1","property2");
String propertyId3=PropertyHelper.getPropertyId("category1","property3");
EqualsPredicate predicate1=new EqualsPredicate(propertyId1,"v1");
EqualsPredicate predicate2=new EqualsPredicate(propertyId2,"v2");
EqualsPredicate predicate3=new EqualsPredicate(propertyId3,"v3");
AndPredicate andPredicate=new AndPredicate(predicate1,predicate2,predicate3);
resource.setProperty(propertyId1,"v1");
resource.setProperty(propertyId2,"monkey");
resource.setProperty(propertyId3,"v3");
Assert.assertFalse(andPredicate.evaluate(resource));
resource.setProperty(propertyId2,"v2");
Assert.assertTrue(andPredicate.evaluate(resource));
}
Class: org.apache.ambari.server.controller.predicate.CategoryIsEmptyPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApplyWithMap(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","mapProperty");
Predicate predicate=new CategoryIsEmptyPredicate(propertyId);
Assert.assertTrue(predicate.evaluate(resource));
Map mapProperty=new HashMap();
resource.setProperty(propertyId,mapProperty);
Assert.assertTrue(predicate.evaluate(resource));
mapProperty.put("foo","bar");
Assert.assertFalse(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String categoryId=PropertyHelper.getPropertyId("category1",null);
Predicate predicate=new CategoryIsEmptyPredicate(categoryId);
Assert.assertTrue(predicate.evaluate(resource));
resource.addCategory(categoryId);
Assert.assertTrue(predicate.evaluate(resource));
String propertyId=PropertyHelper.getPropertyId("category1","bar");
resource.setProperty(propertyId,"value1");
Assert.assertFalse(predicate.evaluate(resource));
}
Class: org.apache.ambari.server.controller.predicate.CategoryPredicateTest InternalCallVerifier IdentityVerifier
@Test public void testAccept(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
TestCategoryPredicate predicate=new TestCategoryPredicate(propertyId);
TestPredicateVisitor visitor=new TestPredicateVisitor();
predicate.accept(visitor);
Assert.assertSame(predicate,visitor.visitedCategoryPredicate);
}
Class: org.apache.ambari.server.controller.predicate.EqualsPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApplyNullValue(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new EqualsPredicate(propertyId,null);
resource.setProperty(propertyId,"monkey");
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,null);
Assert.assertTrue(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
EqualsPredicate predicate=new EqualsPredicate(propertyId,"bar");
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
InternalCallVerifier BooleanVerifier
@Test public void testApplyNumberValues() throws Exception {
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("propertyId1","1");
Predicate predicate=new EqualsPredicate(propertyId,"1");
resource.setProperty(propertyId,"1");
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,"2");
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,"5");
Assert.assertFalse(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new EqualsPredicate(propertyId,"bar");
resource.setProperty(propertyId,"monkey");
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,"bar");
Assert.assertTrue(predicate.evaluate(resource));
propertyId=PropertyHelper.getPropertyId("category1","fun");
predicate=new EqualsPredicate(propertyId,"bar");
Assert.assertFalse(predicate.evaluate(resource));
}
Class: org.apache.ambari.server.controller.predicate.FilterPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApplyEmptyValue(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new FilterPredicate(propertyId,"");
resource.setProperty(propertyId,"monkey");
Assert.assertFalse(predicate.evaluate(resource));
predicate=new FilterPredicate(propertyId,"monkey");
Assert.assertTrue(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testApplyNullValue(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new FilterPredicate(propertyId,null);
resource.setProperty(propertyId,"monkey");
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,null);
Assert.assertTrue(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply() throws Exception {
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","ip");
Predicate predicate=new FilterPredicate(propertyId,IP_ADDRESS_PATTERN);
resource.setProperty(propertyId,"monkey");
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,"10.0.0.1");
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,"127.0.0.1");
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,"0.0.0.0");
Assert.assertTrue(predicate.evaluate(resource));
propertyId=PropertyHelper.getPropertyId("category1","fun");
predicate=new FilterPredicate(propertyId,IP_ADDRESS_PATTERN);
Assert.assertFalse(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
FilterPredicate predicate=new FilterPredicate(propertyId,"bar");
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
Class: org.apache.ambari.server.controller.predicate.GreaterEqualsPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new GreaterEqualsPredicate(propertyId,10);
resource.setProperty(propertyId,1);
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,100);
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,10);
Assert.assertTrue(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
GreaterEqualsPredicate predicate=new GreaterEqualsPredicate(propertyId,10);
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
Class: org.apache.ambari.server.controller.predicate.GreaterPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApplyWithSmallFloats(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new GreaterPredicate(propertyId,0.1);
resource.setProperty(propertyId,1.3);
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,0.06);
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,100.3);
Assert.assertTrue(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new GreaterPredicate(propertyId,10);
resource.setProperty(propertyId,1);
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,100);
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,10);
Assert.assertFalse(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
GreaterPredicate predicate=new GreaterPredicate(propertyId,10);
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
Class: org.apache.ambari.server.controller.predicate.LessEqualsPredicateTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
LessEqualsPredicate predicate=new LessEqualsPredicate(propertyId,10);
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new LessEqualsPredicate(propertyId,10);
resource.setProperty(propertyId,1);
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,100);
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,10);
Assert.assertTrue(predicate.evaluate(resource));
}
Class: org.apache.ambari.server.controller.predicate.LessPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
Predicate predicate=new LessPredicate(propertyId,10);
resource.setProperty(propertyId,1);
Assert.assertTrue(predicate.evaluate(resource));
resource.setProperty(propertyId,100);
Assert.assertFalse(predicate.evaluate(resource));
resource.setProperty(propertyId,10);
Assert.assertFalse(predicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
LessPredicate predicate=new LessPredicate(propertyId,1);
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
Class: org.apache.ambari.server.controller.predicate.NotPredicateTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
EqualsPredicate predicate=new EqualsPredicate(propertyId,"bar");
Set ids=predicate.getPropertyIds();
Assert.assertEquals(1,ids.size());
Assert.assertTrue(ids.contains(propertyId));
}
InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId=PropertyHelper.getPropertyId("category1","foo");
EqualsPredicate predicate=new EqualsPredicate(propertyId,"bar");
NotPredicate notPredicate=new NotPredicate(predicate);
resource.setProperty(propertyId,"monkey");
Assert.assertTrue(notPredicate.evaluate(resource));
resource.setProperty(propertyId,"bar");
Assert.assertFalse(notPredicate.evaluate(resource));
}
Class: org.apache.ambari.server.controller.predicate.OrPredicateTest InternalCallVerifier BooleanVerifier
@Test public void testApply(){
Resource resource=new ResourceImpl(Resource.Type.HostComponent);
String propertyId1=PropertyHelper.getPropertyId("category1","property1");
String propertyId2=PropertyHelper.getPropertyId("category1","property2");
String propertyId3=PropertyHelper.getPropertyId("category1","property3");
EqualsPredicate predicate1=new EqualsPredicate(propertyId1,"v1");
EqualsPredicate predicate2=new EqualsPredicate(propertyId2,"v2");
EqualsPredicate predicate3=new EqualsPredicate(propertyId3,"v3");
OrPredicate orPredicate=new OrPredicate(predicate1,predicate2,predicate3);
resource.setProperty(propertyId1,"big");
resource.setProperty(propertyId2,"monkey");
resource.setProperty(propertyId3,"runner");
Assert.assertFalse(orPredicate.evaluate(resource));
resource.setProperty(propertyId2,"v2");
Assert.assertTrue(orPredicate.evaluate(resource));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetProperties(){
String propertyId1=PropertyHelper.getPropertyId("category1","property1");
String propertyId2=PropertyHelper.getPropertyId("category1","property2");
String propertyId3=PropertyHelper.getPropertyId("category1","property3");
EqualsPredicate predicate1=new EqualsPredicate(propertyId1,"v1");
EqualsPredicate predicate2=new EqualsPredicate(propertyId2,"v2");
EqualsPredicate predicate3=new EqualsPredicate(propertyId3,"v3");
OrPredicate orPredicate=new OrPredicate(predicate1,predicate2,predicate3);
Set ids=orPredicate.getPropertyIds();
Assert.assertEquals(3,ids.size());
Assert.assertTrue(ids.contains(propertyId1));
Assert.assertTrue(ids.contains(propertyId2));
Assert.assertTrue(ids.contains(propertyId3));
}
Class: org.apache.ambari.server.controller.predicate.PredicateVisitorTest InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testVisitor(){
String propertyId=PropertyHelper.getPropertyId("category1","foo");
EqualsPredicate equalsPredicate=new EqualsPredicate(propertyId,"bar");
TestPredicateVisitor visitor=new TestPredicateVisitor();
equalsPredicate.accept(visitor);
Assert.assertSame(equalsPredicate,visitor.visitedComparisonPredicate);
Assert.assertNull(visitor.visitedArrayPredicate);
Assert.assertNull(visitor.visitedUnaryPredicate);
AndPredicate andPredicate=new AndPredicate(equalsPredicate);
visitor=new TestPredicateVisitor();
andPredicate.accept(visitor);
Assert.assertNull(visitor.visitedComparisonPredicate);
Assert.assertSame(andPredicate,visitor.visitedArrayPredicate);
Assert.assertNull(visitor.visitedUnaryPredicate);
NotPredicate notPredicate=new NotPredicate(andPredicate);
visitor=new TestPredicateVisitor();
notPredicate.accept(visitor);
Assert.assertNull(visitor.visitedComparisonPredicate);
Assert.assertNull(visitor.visitedArrayPredicate);
Assert.assertSame(notPredicate,visitor.visitedUnaryPredicate);
CategoryPredicate categoryPredicate=new CategoryIsEmptyPredicate("cat1");
visitor=new TestPredicateVisitor();
categoryPredicate.accept(visitor);
Assert.assertNull(visitor.visitedComparisonPredicate);
Assert.assertNull(visitor.visitedArrayPredicate);
Assert.assertNull(visitor.visitedUnaryPredicate);
Assert.assertSame(categoryPredicate,visitor.visitedCategoryPredicate);
}
Class: org.apache.ambari.server.controller.spi.ResourceTest UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResource(){
for ( Resource.InternalType internalType : Resource.InternalType.values()) {
Resource.Type type=null;
try {
type=Resource.Type.valueOf(internalType.name());
}
catch ( IllegalArgumentException e) {
Assert.fail("Resource.Type should be defined for internal type " + internalType.name() + ".");
}
Assert.assertEquals(type.name(),internalType.name());
Assert.assertEquals(type.ordinal(),internalType.ordinal());
}
Resource.Type newType=new Resource.Type("newType");
Resource.Type newType2=new Resource.Type("newType2");
Assert.assertFalse(newType.equals(newType2));
Assert.assertFalse(newType2.equals(newType));
Assert.assertEquals("newType",newType.name());
Assert.assertFalse(newType.isInternalType());
try {
newType.getInternalType();
Assert.fail("Can't get internal type for a extended resource.");
}
catch ( UnsupportedOperationException e) {
}
Resource.Type t1=Resource.Type.valueOf("newType");
Resource.Type t2=Resource.Type.valueOf("newType2");
Assert.assertTrue(newType.equals(t1));
Assert.assertTrue(t1.equals(newType));
Assert.assertTrue(newType2.equals(t2));
Assert.assertTrue(t2.equals(newType2));
Assert.assertFalse(t1.equals(newType2));
Assert.assertFalse(t2.equals(newType));
try {
Resource.Type.valueOf("badType");
Assert.fail("Expected IllegalArgumentException.");
}
catch ( IllegalArgumentException e) {
}
}
Class: org.apache.ambari.server.controller.test.BufferedThreadPoolExecutorCompletionServiceTest IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that when unbounded queue provided to executor, only{@link ThreadPoolExecutor#getCorePoolSize()} threads are launched
* @throws InterruptedException
*/
@Test public void testOnlyCorePoolThreadsLaunchedForUnboundedQueue() throws InterruptedException {
int CORE_POOL_SIZE=2;
int MAX_POOL_SIZE=5;
int TASKS_COUNT=8;
LinkedBlockingQueue queue=new LinkedBlockingQueue();
ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(CORE_POOL_SIZE,MAX_POOL_SIZE,30000,TimeUnit.MILLISECONDS,queue);
BufferedThreadPoolExecutorCompletionService service=new BufferedThreadPoolExecutorCompletionService<>(threadPoolExecutor);
for (int tc=0; tc < TASKS_COUNT; tc++) {
service.submit(new Runnable(){
@Override public void run(){
try {
longOp();
}
catch ( InterruptedException e) {
e.printStackTrace();
}
}
}
,null);
}
Thread.sleep(500);
Assert.assertEquals(CORE_POOL_SIZE,threadPoolExecutor.getActiveCount());
for (int tc=0; tc < TASKS_COUNT; tc++) {
Future take=service.take();
Assert.assertTrue(take.isDone());
Assert.assertTrue("No more than CORE_POOL_SIZE threads should be launched",threadPoolExecutor.getActiveCount() <= CORE_POOL_SIZE);
}
threadPoolExecutor.shutdown();
}
IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that when load is more than max-pool-size, the number of threads
* scales up.
* @throws InterruptedException
*/
@Test public void testMaxPoolSizeThreadsLaunched() throws InterruptedException {
int CORE_POOL_SIZE=2;
int MAX_POOL_SIZE=10;
int TASKS_COUNT=24;
LinkedBlockingQueue queue=new LinkedBlockingQueue(CORE_POOL_SIZE);
ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(CORE_POOL_SIZE,MAX_POOL_SIZE,30000,TimeUnit.MILLISECONDS,queue);
BufferedThreadPoolExecutorCompletionService service=new BufferedThreadPoolExecutorCompletionService<>(threadPoolExecutor);
for (int tc=0; tc < TASKS_COUNT; tc++) {
service.submit(new Runnable(){
@Override public void run(){
try {
longOp();
}
catch ( InterruptedException e) {
e.printStackTrace();
}
}
}
,null);
}
Thread.sleep(500);
Assert.assertEquals(MAX_POOL_SIZE,threadPoolExecutor.getActiveCount());
for (int tc=0; tc < TASKS_COUNT; tc++) {
Future take=service.take();
Assert.assertTrue(take.isDone());
Assert.assertTrue("No more than MAX_POOL_SIZE threads should be launched",threadPoolExecutor.getActiveCount() <= MAX_POOL_SIZE);
}
threadPoolExecutor.shutdown();
}
IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that when load is more than core-pool-size and less than
* max-pool-size, the number of threads scales up.
* @throws InterruptedException
*/
@Test public void testLessThanMaxPoolSizeThreadsLaunched() throws InterruptedException {
int CORE_POOL_SIZE=2;
int MAX_POOL_SIZE=10;
int TASKS_COUNT=8;
LinkedBlockingQueue queue=new LinkedBlockingQueue(CORE_POOL_SIZE);
ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(CORE_POOL_SIZE,MAX_POOL_SIZE,30000,TimeUnit.MILLISECONDS,queue);
BufferedThreadPoolExecutorCompletionService service=new BufferedThreadPoolExecutorCompletionService<>(threadPoolExecutor);
for (int tc=0; tc < TASKS_COUNT; tc++) {
service.submit(new Runnable(){
@Override public void run(){
try {
longOp();
}
catch ( InterruptedException e) {
e.printStackTrace();
}
}
}
,null);
}
Thread.sleep(500);
Assert.assertEquals(TASKS_COUNT - CORE_POOL_SIZE,threadPoolExecutor.getActiveCount());
for (int tc=0; tc < TASKS_COUNT; tc++) {
Future take=service.take();
Assert.assertTrue(take.isDone());
Assert.assertTrue("No more than TASKS_COUNT threads should be launched",threadPoolExecutor.getActiveCount() <= TASKS_COUNT);
}
threadPoolExecutor.shutdown();
}
IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that when load is more than max-pool-size, the number of threads
* scales up.
* @throws InterruptedException
*/
@Test public void testScalingThreadPoolExecutor() throws InterruptedException {
int CORE_POOL_SIZE=2;
int MAX_POOL_SIZE=10;
int TASKS_COUNT=24;
ThreadPoolExecutor threadPoolExecutor=new ScalingThreadPoolExecutor(CORE_POOL_SIZE,MAX_POOL_SIZE,30000,TimeUnit.MILLISECONDS);
BufferedThreadPoolExecutorCompletionService service=new BufferedThreadPoolExecutorCompletionService<>(threadPoolExecutor);
for (int tc=0; tc < TASKS_COUNT; tc++) {
service.submit(new Runnable(){
@Override public void run(){
try {
longOp();
}
catch ( InterruptedException e) {
e.printStackTrace();
}
}
}
,null);
}
Thread.sleep(500);
Assert.assertEquals(MAX_POOL_SIZE,threadPoolExecutor.getActiveCount());
for (int tc=0; tc < TASKS_COUNT; tc++) {
Future take=service.take();
Assert.assertTrue(take.isDone());
Assert.assertTrue("No more than MAX_POOL_SIZE threads should be launched",threadPoolExecutor.getActiveCount() <= MAX_POOL_SIZE);
}
threadPoolExecutor.shutdown();
}
Class: org.apache.ambari.server.controller.utilities.PredicateBuilderTest InternalCallVerifier BooleanVerifier
@Test public void testGreaterInteger(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThan(1).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThan(99).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testSimpleOr(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").or().property(p2).equals("bar").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("foo").or().property(p2).equals("car").toPredicate();
Assert.assertTrue(predicate2.evaluate(resource));
PredicateBuilder pb3=new PredicateBuilder();
Predicate predicate3=pb3.property(p1).equals("fun").or().property(p2).equals("car").toPredicate();
Assert.assertFalse(predicate3.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testSimple(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("bar").toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessLong(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2L);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThan(99L).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThan(1L).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testSimpleAndNot(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").and().not().property(p2).equals("bar").toPredicate();
Assert.assertFalse(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("foo").and().not().property(p2).equals("car").toPredicate();
Assert.assertTrue(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testLongOr(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
String p3=PropertyHelper.getPropertyId("cat1","prop3");
String p4=PropertyHelper.getPropertyId("cat1","prop4");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
resource.setProperty(p3,"cat");
resource.setProperty(p4,"dog");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").or().property(p2).equals("bar").or().property(p3).equals("cat").or().property(p4).equals("dog").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("foo").or().property(p2).equals("car").or().property(p3).equals("cat").or().property(p4).equals("dog").toPredicate();
Assert.assertTrue(predicate2.evaluate(resource));
PredicateBuilder pb3=new PredicateBuilder();
Predicate predicate3=pb3.property(p1).equals("fun").or().property(p2).equals("car").or().property(p3).equals("bat").or().property(p4).equals("dot").toPredicate();
Assert.assertFalse(predicate3.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testEqualsDouble(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,1.999);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals(Double.valueOf(1.999)).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals(Double.valueOf(99.998)).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testSimpleAnd(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").and().property(p2).equals("bar").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("foo").and().property(p2).equals("car").toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testAndOr(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
String p3=PropertyHelper.getPropertyId("cat1","prop3");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
resource.setProperty(p3,"cat");
PredicateBuilder pb1=new PredicateBuilder();
Predicate predicate1=pb1.property(p1).equals("foo").and().property(p2).equals("bar").or().property(p3).equals("cat").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("foo").and().property(p2).equals("car").or().property(p3).equals("cat").toPredicate();
Assert.assertTrue(predicate2.evaluate(resource));
PredicateBuilder pb3=new PredicateBuilder();
Predicate predicate3=pb3.property(p1).equals("foo").and().property(p2).equals("bar").or().property(p3).equals("can").toPredicate();
Assert.assertTrue(predicate3.evaluate(resource));
PredicateBuilder pb4=new PredicateBuilder();
Predicate predicate4=pb4.property(p1).equals("foo").and().property(p2).equals("bat").or().property(p3).equals("can").toPredicate();
Assert.assertFalse(predicate4.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessInteger(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThan(99).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThan(1).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterThanEqualToDouble(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2.999);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThanEqualTo(1.999).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThanEqualTo(99.998).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
UtilityVerifier InternalCallVerifier IdentityVerifier HybridVerifier
@Test public void testDone(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate=pb.property(p1).equals("foo").toPredicate();
try {
pb.property(p1).equals("foo").toPredicate();
Assert.fail("Expected IllegalStateException.");
}
catch ( IllegalStateException e) {
}
Assert.assertSame(predicate,pb.toPredicate());
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterDouble(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2.999);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThan(1.999).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThan(99.998).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessThanEqualToFloat(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,(float)2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThanEqualTo((float)99).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThanEqualTo((float)1).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testLongAnd(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
String p3=PropertyHelper.getPropertyId("cat1","prop3");
String p4=PropertyHelper.getPropertyId("cat1","prop4");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
resource.setProperty(p3,"cat");
resource.setProperty(p4,"dog");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").and().property(p2).equals("bar").and().property(p3).equals("cat").and().property(p4).equals("dog").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("foo").and().property(p2).equals("bar").and().property(p3).equals("cat").and().property(p4).equals("dot").toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterThanEqualToLong(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2L);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThanEqualTo(1L).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThanEqualTo(99L).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testBlocks(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
String p3=PropertyHelper.getPropertyId("cat1","prop3");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
resource.setProperty(p3,"cat");
PredicateBuilder pb1=new PredicateBuilder();
Predicate predicate1=pb1.begin().property(p1).equals("foo").and().property(p2).equals("bar").end().or().property(p3).equals("cat").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.begin().property(p1).equals("foo").and().property(p2).equals("bat").end().or().property(p3).equals("cat").toPredicate();
Assert.assertTrue(predicate2.evaluate(resource));
PredicateBuilder pb3=new PredicateBuilder();
Predicate predicate3=pb3.begin().property(p1).equals("foo").and().property(p2).equals("bar").end().or().property(p3).equals("can").toPredicate();
Assert.assertTrue(predicate3.evaluate(resource));
PredicateBuilder pb4=new PredicateBuilder();
Predicate predicate4=pb4.begin().property(p1).equals("foo").and().property(p2).equals("bat").end().or().property(p3).equals("can").toPredicate();
Assert.assertFalse(predicate4.evaluate(resource));
PredicateBuilder pb5=new PredicateBuilder();
Predicate predicate5=pb5.property(p1).equals("foo").and().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().toPredicate();
Assert.assertTrue(predicate5.evaluate(resource));
PredicateBuilder pb6=new PredicateBuilder();
Predicate predicate6=pb6.property(p1).equals("foo").and().begin().property(p2).equals("bat").or().property(p3).equals("cat").end().toPredicate();
Assert.assertTrue(predicate6.evaluate(resource));
PredicateBuilder pb7=new PredicateBuilder();
Predicate predicate7=pb7.property(p1).equals("foo").and().begin().property(p2).equals("bat").or().property(p3).equals("can").end().toPredicate();
Assert.assertFalse(predicate7.evaluate(resource));
PredicateBuilder pb8=new PredicateBuilder();
Predicate predicate8=pb8.property(p1).equals("fat").and().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().toPredicate();
Assert.assertFalse(predicate8.evaluate(resource));
PredicateBuilder pb9=new PredicateBuilder();
Predicate predicate9=pb9.property(p1).equals("foo").and().not().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().toPredicate();
Assert.assertFalse(predicate9.evaluate(resource));
PredicateBuilder pb10=new PredicateBuilder();
Predicate predicate10=pb10.property(p1).equals("foo").and().not().begin().property(p2).equals("bat").or().property(p3).equals("car").end().toPredicate();
Assert.assertTrue(predicate10.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessThanEqualToLong(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2L);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThanEqualTo(99L).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThanEqualTo(1L).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testNestedBlocks(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
String p2=PropertyHelper.getPropertyId("cat1","prop2");
String p3=PropertyHelper.getPropertyId("cat1","prop3");
String p4=PropertyHelper.getPropertyId("cat1","prop4");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
resource.setProperty(p3,"cat");
resource.setProperty(p4,"dog");
PredicateBuilder pb1=new PredicateBuilder();
Predicate predicate1=pb1.begin().property(p1).equals("foo").and().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().end().or().property(p4).equals("dog").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.begin().property(p1).equals("fat").and().begin().property(p2).equals("bar").or().property(p3).equals("cat").end().end().or().property(p4).equals("dot").toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterFloat(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,(float)2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThan((float)1).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThan((float)99).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testAltProperty(){
String p1="cat1/prop1";
String p2="cat1/prop2";
String p3="prop3";
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
resource.setProperty(p2,"bar");
resource.setProperty(p3,"cat");
PredicateBuilder pb1=new PredicateBuilder();
Predicate predicate1=pb1.begin().property("cat1/prop1").equals("foo").and().property("cat1/prop2").equals("bar").end().or().property("prop3").equals("cat").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessThanEqualToInteger(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThanEqualTo(99).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThanEqualTo(1).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterThanEqualToFloat(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,(float)2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThanEqualTo((float)1).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThanEqualTo((float)99).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterLong(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2L);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThan(1L).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThan(99L).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testGreaterThanEqualToInteger(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).greaterThanEqualTo(1).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).greaterThanEqualTo(99).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testSimpleNot(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.not().property(p1).equals("foo").toPredicate();
Assert.assertFalse(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.not().property(p1).equals("bar").toPredicate();
Assert.assertTrue(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessDouble(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2.999);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThan(99.999).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThan(1.998).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testEqualsLong(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,1L);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals(1L).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals(99L).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessThanEqualToDouble(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,2.999);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThanEqualTo(99.999).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThanEqualTo(1.998).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testEqualsString(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,"foo");
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals("foo").toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals("bar").toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testEqualsInteger(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,1);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals(1).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals(99).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testLessFloat(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,(float)2);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).lessThan((float)99).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).lessThan((float)1).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
InternalCallVerifier BooleanVerifier
@Test public void testEqualsFloat(){
String p1=PropertyHelper.getPropertyId("cat1","prop1");
Resource resource=new ResourceImpl(Resource.Type.Cluster);
resource.setProperty(p1,(float)1);
PredicateBuilder pb=new PredicateBuilder();
Predicate predicate1=pb.property(p1).equals(Float.valueOf(1)).toPredicate();
Assert.assertTrue(predicate1.evaluate(resource));
PredicateBuilder pb2=new PredicateBuilder();
Predicate predicate2=pb2.property(p1).equals(Float.valueOf(99)).toPredicate();
Assert.assertFalse(predicate2.evaluate(resource));
}
Class: org.apache.ambari.server.customactions.ActionDefinitionManagerTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadCustomActionDefinitions() throws Exception {
ActionDefinitionManager manager=new ActionDefinitionManager();
manager.readCustomActionDefinitions(new File(customActionDefinitionRoot));
Assert.assertEquals(2,manager.getAllActionDefinition().size());
ActionDefinition ad=manager.getActionDefinition("customAction1");
Assert.assertNotNull(ad);
Assert.assertEquals("customAction1",ad.getActionName());
Assert.assertEquals("A random test",ad.getDescription());
Assert.assertEquals("threshold",ad.getInputs());
Assert.assertEquals("TASKTRACKER",ad.getTargetComponent());
Assert.assertEquals("MAPREDUCE",ad.getTargetService());
Assert.assertEquals(60,(int)ad.getDefaultTimeout());
Assert.assertEquals(TargetHostType.ALL,ad.getTargetType());
Assert.assertEquals(ActionType.USER,ad.getActionType());
ad=manager.getActionDefinition("customAction2");
Assert.assertNotNull(ad);
Assert.assertEquals("customAction2",ad.getActionName());
Assert.assertEquals("A random test",ad.getDescription());
Assert.assertEquals(null,ad.getInputs());
Assert.assertEquals("TASKTRACKER",ad.getTargetComponent());
Assert.assertEquals("MAPREDUCE",ad.getTargetService());
Assert.assertEquals(60,(int)ad.getDefaultTimeout());
Assert.assertEquals(null,ad.getTargetType());
Assert.assertEquals(ActionType.USER,ad.getActionType());
}
Class: org.apache.ambari.server.events.EventsTest InternalCallVerifier BooleanVerifier
/**
* Tests that {@link ServiceInstalledEvent}s are fired correctly.
* @throws Exception
*/
@Test public void testServiceInstalledEvent() throws Exception {
Class extends AmbariEvent> eventClass=ServiceInstalledEvent.class;
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
installHdfsService();
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that {@link MaintenanceModeEvent}s are fired correctly.
* @throws Exception
*/
@Test public void testMaintenanceModeEvents() throws Exception {
installHdfsService();
Service service=m_cluster.getService("HDFS");
Class extends AmbariEvent> eventClass=MaintenanceModeEvent.class;
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
service.setMaintenanceState(MaintenanceState.ON);
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
Assert.assertEquals(1,m_listener.getAmbariEventReceivedCount(eventClass));
m_listener.reset();
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
List componentHosts=m_cluster.getServiceComponentHosts(HOSTNAME);
ServiceComponentHost componentHost=componentHosts.get(0);
componentHost.setMaintenanceState(MaintenanceState.OFF);
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
Assert.assertEquals(1,m_listener.getAmbariEventReceivedCount(eventClass));
m_listener.reset();
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
Host host=m_clusters.getHost(HOSTNAME);
host.setMaintenanceState(m_cluster.getClusterId(),MaintenanceState.ON);
host.setMaintenanceState(m_cluster.getClusterId(),MaintenanceState.OFF);
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
Assert.assertEquals(2,m_listener.getAmbariEventReceivedCount(eventClass));
}
InternalCallVerifier BooleanVerifier
/**
* Tests that {@link ServiceComponentUninstalledEvent}s are fired correctly.
* @throws Exception
*/
@Test public void testServiceComponentUninstalledEvent() throws Exception {
Class extends AmbariEvent> eventClass=ServiceComponentUninstalledEvent.class;
installHdfsService();
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
m_cluster.getServiceComponentHosts(HOSTNAME).get(0).delete();
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
/**
*/
@Before public void setup() throws Exception {
m_injector=Guice.createInjector(new InMemoryDefaultTestModule());
m_injector.getInstance(GuiceJpaInitializer.class);
m_helper=m_injector.getInstance(OrmTestHelper.class);
EventBus synchronizedBus=EventBusSynchronizer.synchronizeAmbariEventPublisher(m_injector);
m_listener=m_injector.getInstance(MockEventListener.class);
synchronizedBus.register(m_listener);
m_clusters=m_injector.getInstance(Clusters.class);
m_serviceFactory=m_injector.getInstance(ServiceFactory.class);
m_componentFactory=m_injector.getInstance(ServiceComponentFactory.class);
m_schFactory=m_injector.getInstance(ServiceComponentHostFactory.class);
m_definitionDao=m_injector.getInstance(AlertDefinitionDAO.class);
m_clusterName="foo";
StackId stackId=new StackId("HDP","2.0.6");
m_clusters.addCluster(m_clusterName,stackId);
m_clusters.addHost(HOSTNAME);
Host host=m_clusters.getHost(HOSTNAME);
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","6.4");
host.setHostAttributes(hostAttributes);
host.setState(HostState.HEALTHY);
host.persist();
m_cluster=m_clusters.getCluster(m_clusterName);
Assert.assertNotNull(m_cluster);
m_cluster.setDesiredStackVersion(stackId);
m_helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
m_cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
m_clusters.mapHostToCluster(HOSTNAME,m_clusterName);
}
InternalCallVerifier BooleanVerifier
/**
* Tests that {@link ServiceRemovedEvent}s are fired correctly.
* @throws Exception
*/
@Test public void testServiceRemovedEvent() throws Exception {
Class extends AmbariEvent> eventClass=ServiceRemovedEvent.class;
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
installHdfsService();
m_cluster.deleteAllServices();
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that {@link ServiceComponentUninstalledEvent}s are fired correctly.
* @throws Exception
*/
@Test public void testClusterRenameEvent() throws Exception {
Class extends AmbariEvent> eventClass=ClusterEvent.class;
installHdfsService();
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
m_cluster.setClusterName(UUID.randomUUID().toString());
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
List ambariEvents=m_listener.getAmbariEventInstances(eventClass);
Assert.assertEquals(1,ambariEvents.size());
Assert.assertEquals(AmbariEventType.CLUSTER_RENAME,ambariEvents.get(0).getType());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that {@link ServiceRemovedEvent}s are fired correctly and alerts are
* removed.
* @throws Exception
*/
@Test public void testServiceRemovedEventForAlerts() throws Exception {
Class extends AmbariEvent> eventClass=ServiceRemovedEvent.class;
Assert.assertFalse(m_listener.isAmbariEventReceived(eventClass));
installHdfsService();
Assert.assertTrue(m_definitionDao.findAll(m_cluster.getClusterId()).size() > 0);
List hdfsDefinitions=m_definitionDao.findByService(m_cluster.getClusterId(),"HDFS");
Assert.assertTrue(hdfsDefinitions.size() > 0);
AlertDefinitionEntity definition=hdfsDefinitions.get(0);
m_cluster.getService("HDFS").delete();
Assert.assertTrue(m_listener.isAmbariEventReceived(eventClass));
hdfsDefinitions=m_definitionDao.findByService(m_cluster.getClusterId(),"HDFS");
Assert.assertEquals(0,hdfsDefinitions.size());
}
Class: org.apache.ambari.server.events.listeners.upgrade.HostVersionOutOfSyncListenerTest BranchVerifier InternalCallVerifier EqualityVerifier
/**
* When a host is added to a cluster that has non-CURRENT cluster_version records,
* then Ambari needs to insert host_verion record for each one of
* those stack versions with a state of OUT_OF_SYNC
*/
@Test public void testOnHostEvent() throws AmbariException {
Host h1=clusters.getHost("h1");
h1.setState(HostState.HEALTHY);
StackId stackId=new StackId(this.stackId);
StackId yaStackId=new StackId(yetAnotherStackId);
RepositoryVersionEntity repositoryVersionEntity=helper.getOrCreateRepositoryVersion(stackId,"2.2.0-1000");
RepositoryVersionEntity repositoryVersionEntity2=helper.getOrCreateRepositoryVersion(stackId,"2.2.0-2000");
c1.createClusterVersion(stackId,"2.2.0-1000","admin",RepositoryVersionState.INSTALLING);
c1.setCurrentStackVersion(stackId);
c1.recalculateAllClusterVersionStates();
assertRepoVersionState(stackId.getStackId(),"2.2.0-1000",RepositoryVersionState.INSTALLING);
assertRepoVersionState(stackId.getStackId(),"2.2.0-2086",RepositoryVersionState.CURRENT);
HostVersionEntity hv1=helper.createHostVersion("h1",repositoryVersionEntity,RepositoryVersionState.INSTALLED);
HostVersionEntity hv2=helper.createHostVersion("h1",repositoryVersionEntity2,RepositoryVersionState.INSTALLED);
c1.recalculateAllClusterVersionStates();
assertRepoVersionState(stackId.getStackId(),"2.2.0-1000",RepositoryVersionState.INSTALLED);
assertRepoVersionState(stackId.getStackId(),"2.2.0-2000",RepositoryVersionState.INSTALLED);
assertRepoVersionState(stackId.getStackId(),"2.2.0-2086",RepositoryVersionState.CURRENT);
addHost("h2");
clusters.mapHostToCluster("h2","c1");
List h2Versions=hostVersionDAO.findByHost("h2");
for ( HostVersionEntity hostVersionEntity : h2Versions) {
if (hostVersionEntity.getRepositoryVersion().toString().equals("2.2.0-2086")) {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.CURRENT);
}
else {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.OUT_OF_SYNC);
}
}
}
BranchVerifier InternalCallVerifier EqualityVerifier
/**
* When a service is added to a cluster, all non-CURRENT host versions on
* all affected hosts (where host new components are installed)
* should transition to OUT_OF_SYNC state
*/
@Test public void testOnServiceEvent() throws AmbariException {
String INSTALLED_VERSION="2.2.0-1000";
String INSTALLED_VERSION_2="2.1.1-2000";
StackId stackId=new StackId(this.stackId);
StackId yaStackId=new StackId(yetAnotherStackId);
createClusterAndHosts(INSTALLED_VERSION,stackId);
addRepoVersion(INSTALLED_VERSION_2,yaStackId);
List hostList=new ArrayList();
hostList.add("h1");
hostList.add("h2");
hostList.add("h3");
Map> hdfsTopology=new HashMap>();
hdfsTopology.put("NAMENODE",Collections.singletonList(0));
hdfsTopology.put("SECONDARY_NAMENODE",Collections.singletonList(1));
List datanodeHosts=Arrays.asList(0,1);
hdfsTopology.put("DATANODE",new ArrayList(datanodeHosts));
addService(c1,hostList,hdfsTopology,"HDFS");
Set changedHosts=new HashSet();
changedHosts.add("h1");
changedHosts.add("h2");
List hostVersions=hostVersionDAO.findAll();
assertRepoVersionState(stackId.getStackId(),INSTALLED_VERSION,RepositoryVersionState.INSTALLED);
assertRepoVersionState(yaStackId.getStackId(),INSTALLED_VERSION_2,RepositoryVersionState.INSTALLED);
for ( HostVersionEntity hostVersionEntity : hostVersions) {
if (hostVersionEntity.getRepositoryVersion().getVersion().equals(INSTALLED_VERSION) || hostVersionEntity.getRepositoryVersion().getVersion().equals(INSTALLED_VERSION_2)) {
if (changedHosts.contains(hostVersionEntity.getHostName())) {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.OUT_OF_SYNC);
}
else {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.INSTALLED);
}
}
}
}
BranchVerifier InternalCallVerifier EqualityVerifier
/**
* When a new service is added to a cluster with components, all INSTALLED host versions on
* all affected hosts (where host new components are installed)
* should transition to OUT_OF_SYNC state.
*/
@Test public void testOnServiceComponentEvent() throws AmbariException {
String INSTALLED_VERSION="2.2.0-1000";
String INSTALLED_VERSION_2="2.1.1-2000";
StackId stackId=new StackId(this.stackId);
StackId yaStackId=new StackId(yetAnotherStackId);
createClusterAndHosts(INSTALLED_VERSION,stackId);
addRepoVersion(INSTALLED_VERSION_2,yaStackId);
List hostList=new ArrayList();
hostList.add("h1");
hostList.add("h2");
hostList.add("h3");
addServiceComponent(c1,hostList,"ZOOKEEPER","ZOOKEEPER_CLIENT");
Set changedHosts=new HashSet();
changedHosts.add("h1");
changedHosts.add("h2");
changedHosts.add("h3");
assertRepoVersionState(stackId.getStackId(),INSTALLED_VERSION,RepositoryVersionState.INSTALLED);
List hostVersions=hostVersionDAO.findAll();
for ( HostVersionEntity hostVersionEntity : hostVersions) {
RepositoryVersionEntity repoVersion=hostVersionEntity.getRepositoryVersion();
if (repoVersion.getVersion().equals(INSTALLED_VERSION) || repoVersion.getVersion().equals(INSTALLED_VERSION_2)) {
if (changedHosts.contains(hostVersionEntity.getHostName())) {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.OUT_OF_SYNC);
}
else {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.INSTALLED);
}
}
}
}
BranchVerifier InternalCallVerifier EqualityVerifier
/**
* When a service with components that don't advertise their versions
* is added to a cluster, all non-CURRENT host versions on
* all affected hosts (where host new components are installed)
* should NOT transition to OUT_OF_SYNC state
*/
@Test public void testOnServiceEvent_component_does_not_advertise_version() throws AmbariException {
String INSTALLED_VERSION="2.2.0-1000";
StackId stackId=new StackId(this.stackId);
createClusterAndHosts(INSTALLED_VERSION,stackId);
List hostList=new ArrayList();
hostList.add("h1");
hostList.add("h2");
hostList.add("h3");
Map> hdfsTopology=new HashMap>();
hdfsTopology.put("GANGLIA_SERVER",Collections.singletonList(0));
List monitorHosts=Arrays.asList(0,1);
hdfsTopology.put("GANGLIA_MONITOR",new ArrayList(monitorHosts));
addService(c1,hostList,hdfsTopology,"GANGLIA");
Set changedHosts=new HashSet();
changedHosts.add("h1");
changedHosts.add("h2");
List hostVersions=hostVersionDAO.findAll();
assertRepoVersionState(stackId.getStackId(),INSTALLED_VERSION,RepositoryVersionState.INSTALLED);
for ( HostVersionEntity hostVersionEntity : hostVersions) {
if (hostVersionEntity.getRepositoryVersion().getVersion().equals(INSTALLED_VERSION)) {
assertEquals(hostVersionEntity.getState(),RepositoryVersionState.INSTALLED);
}
}
}
Class: org.apache.ambari.server.events.publishers.VersionEventPublisherTest InternalCallVerifier EqualityVerifier
@Test public void testPublish() throws Exception {
Cluster cluster=createNiceMock(Cluster.class);
ServiceComponentHost sch=createNiceMock(ServiceComponentHost.class);
expect(cluster.getClusterId()).andReturn(99L);
replay(cluster,sch);
VersionEventPublisher publisher=injector.getInstance(VersionEventPublisher.class);
Listener listener=injector.getInstance(Listener.class);
HostComponentVersionEvent event=new HostComponentVersionEvent(cluster,sch);
publisher.publish(event);
assertEquals(event,listener.getLastEvent());
verify(cluster,sch);
}
Class: org.apache.ambari.server.metadata.AgentAlertDefinitionsTest InternalCallVerifier EqualityVerifier
/**
* Tests loading the agent alerts.
*/
@Test public void testLoadingAgentHostAlerts(){
AmbariServiceAlertDefinitions ambariServiceAlertDefinitions=m_injector.getInstance(AmbariServiceAlertDefinitions.class);
List definitions=ambariServiceAlertDefinitions.getAgentDefinitions();
Assert.assertEquals(1,definitions.size());
for ( AlertDefinition definition : definitions) {
Assert.assertEquals(Components.AMBARI_AGENT.name(),definition.getComponentName());
Assert.assertEquals("AMBARI",definition.getServiceName());
}
}
InternalCallVerifier EqualityVerifier
/**
* Tests loading the agent alerts.
*/
@Test public void testLoadingServertAlerts(){
AmbariServiceAlertDefinitions ambariServiceAlertDefinitions=m_injector.getInstance(AmbariServiceAlertDefinitions.class);
List definitions=ambariServiceAlertDefinitions.getServerDefinitions();
Assert.assertEquals(2,definitions.size());
for ( AlertDefinition definition : definitions) {
Assert.assertEquals(Components.AMBARI_SERVER.name(),definition.getComponentName());
Assert.assertEquals("AMBARI",definition.getServiceName());
}
}
Class: org.apache.ambari.server.metadata.RoleCommandOrderTest APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAddDependencies() throws IOException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
InputStream testJsonIS=getClass().getClassLoader().getResourceAsStream(TEST_RCO_DATA_FILE);
ObjectMapper mapper=new ObjectMapper();
Map testData=mapper.readValue(testJsonIS,new TypeReference>(){
}
);
rco.addDependencies(testData);
mapper.setVisibility(JsonMethod.ALL,JsonAutoDetect.Visibility.ANY);
String dump=mapper.writeValueAsString(rco.getDependencies());
List parts=Arrays.asList(dump.substring(1,522).split(Pattern.quote("],")));
assertEquals(3,parts.size());
assertTrue(parts.contains("\"RoleCommandPair{role=SECONDARY_NAMENODE, cmd=UPGRADE}\":[{\"role\":{\"name\":\"NAMENODE\"},\"cmd\":\"UPGRADE\"}"));
assertTrue(parts.contains("\"RoleCommandPair{role=SECONDARY_NAMENODE, cmd=START}\":[{\"role\":{\"name\":\"NAMENODE\"},\"cmd\":\"START\"}"));
boolean datanodeCommandExists=false;
for ( String part : parts) {
if (part.contains("RoleCommandPair{role=DATANODE, cmd=STOP}")) {
datanodeCommandExists=true;
String[] parts2=part.split(Pattern.quote(":["));
assertEquals(2,parts2.length);
assertEquals("\"RoleCommandPair{role=DATANODE, cmd=STOP}\"",parts2[0]);
List components=Arrays.asList(new String[]{"\"role\":{\"name\":\"HBASE_MASTER\"},\"cmd\":\"STOP\"","\"role\":{\"name\":\"RESOURCEMANAGER\"},\"cmd\":\"STOP\"","\"role\":{\"name\":\"TASKTRACKER\"},\"cmd\":\"STOP\"","\"role\":{\"name\":\"NODEMANAGER\"},\"cmd\":\"STOP\"","\"role\":{\"name\":\"HISTORYSERVER\"},\"cmd\":\"STOP\"","\"role\":{\"name\":\"JOBTRACKER\"},\"cmd\":\"STOP\""});
Assert.assertTrue(CollectionPresentationUtils.isStringPermutationOfCollection(parts2[1],components,"},{",1,1));
}
}
assertTrue(datanodeCommandExists);
}
InternalCallVerifier BooleanVerifier
/**
* Tests building dependencies in HA-enabled HDFS cluster. Uses real
* dependency mapping file (role_command_order.json)
*/
@Test public void testInitializeAtHaHDFSCluster() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=createMock(ClusterImpl.class);
expect(cluster.getService("GLUSTERFS")).andReturn(null);
Service hdfsService=createMock(Service.class);
ServiceComponent journalnodeSC=createMock(ServiceComponent.class);
expect(cluster.getService("HDFS")).andReturn(hdfsService).atLeastOnce();
expect(cluster.getService("YARN")).andReturn(null);
expect(hdfsService.getServiceComponent("JOURNALNODE")).andReturn(journalnodeSC);
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.0.6"));
replay(cluster);
replay(hdfsService);
Map> deps=rco.getDependencies();
assertTrue("Dependencies are empty before initialization",deps.size() == 0);
rco.initialize(cluster);
assertTrue("Dependencies are loaded after initialization",deps.size() > 0);
verify(cluster);
verify(hdfsService);
assertFalse(dependenciesContainBlockedRole(deps,Role.PEERSTATUS));
assertFalse(dependenciesContainBlockedRole(deps,Role.GLUSTERFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockedRole(deps,Role.GLUSTERFS_CLIENT));
assertFalse(dependenciesContainBlockerRole(deps,Role.PEERSTATUS));
assertFalse(dependenciesContainBlockerRole(deps,Role.GLUSTERFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockerRole(deps,Role.GLUSTERFS_CLIENT));
assertTrue(dependenciesContainBlockerRole(deps,Role.DATANODE));
assertTrue(dependenciesContainBlockerRole(deps,Role.JOURNALNODE));
assertTrue(dependenciesContainBlockedRole(deps,Role.ZKFC));
}
InternalCallVerifier BooleanVerifier
/**
* Tests building dependencies in not HA-enabled HDFS cluster. Uses real
* dependency mapping file (role_command_order.json)
*/
@Test public void testInitializeAtHDFSCluster() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=createMock(ClusterImpl.class);
expect(cluster.getService("GLUSTERFS")).andReturn(null);
Service hdfsService=createMock(Service.class);
expect(cluster.getService("HDFS")).andReturn(hdfsService).atLeastOnce();
expect(cluster.getService("YARN")).andReturn(null).atLeastOnce();
expect(hdfsService.getServiceComponent("JOURNALNODE")).andReturn(null);
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.0.6"));
replay(cluster);
replay(hdfsService);
Map> deps=rco.getDependencies();
assertTrue("Dependencies are empty before initialization",deps.size() == 0);
rco.initialize(cluster);
assertTrue("Dependencies are loaded after initialization",deps.size() > 0);
verify(cluster);
verify(hdfsService);
assertFalse(dependenciesContainBlockedRole(deps,Role.PEERSTATUS));
assertFalse(dependenciesContainBlockedRole(deps,Role.GLUSTERFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockedRole(deps,Role.GLUSTERFS_CLIENT));
assertFalse(dependenciesContainBlockerRole(deps,Role.PEERSTATUS));
assertFalse(dependenciesContainBlockerRole(deps,Role.GLUSTERFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockerRole(deps,Role.GLUSTERFS_CLIENT));
assertTrue(dependenciesContainBlockerRole(deps,Role.DATANODE));
assertFalse(dependenciesContainBlockerRole(deps,Role.JOURNALNODE));
assertFalse(dependenciesContainBlockedRole(deps,Role.ZKFC));
}
InternalCallVerifier BooleanVerifier
/**
* Tests building dependencies in GLUSTERFS cluster. Uses real dependency mapping
* file (role_command_order.json)
*/
@Test public void testInitializeAtGLUSTERFSCluster() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=createMock(ClusterImpl.class);
Service service=createMock(Service.class);
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.0.6"));
expect(cluster.getService("GLUSTERFS")).andReturn(service);
expect(cluster.getService("HDFS")).andReturn(null);
expect(cluster.getService("YARN")).andReturn(null);
replay(cluster);
Map> deps=rco.getDependencies();
assertTrue("Dependencies are empty before initialization",deps.size() == 0);
rco.initialize(cluster);
assertTrue("Dependencies are loaded after initialization",deps.size() > 0);
verify(cluster);
assertFalse(dependenciesContainBlockedRole(deps,Role.DATANODE));
assertFalse(dependenciesContainBlockedRole(deps,Role.NAMENODE));
assertFalse(dependenciesContainBlockedRole(deps,Role.SECONDARY_NAMENODE));
assertFalse(dependenciesContainBlockedRole(deps,Role.JOURNALNODE));
assertFalse(dependenciesContainBlockedRole(deps,Role.NAMENODE_SERVICE_CHECK));
assertFalse(dependenciesContainBlockedRole(deps,Role.HDFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockedRole(deps,Role.HDFS_CLIENT));
assertFalse(dependenciesContainBlockerRole(deps,Role.SECONDARY_NAMENODE));
assertFalse(dependenciesContainBlockerRole(deps,Role.JOURNALNODE));
assertFalse(dependenciesContainBlockerRole(deps,Role.NAMENODE_SERVICE_CHECK));
assertFalse(dependenciesContainBlockerRole(deps,Role.HDFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockerRole(deps,Role.HDFS_CLIENT));
assertTrue(dependenciesContainBlockerRole(deps,Role.PEERSTATUS));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testTransitiveServices() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=createMock(ClusterImpl.class);
Service hdfsService=createMock(Service.class);
ServiceComponent namenode=createMock(ServiceComponent.class);
expect(namenode.getName()).andReturn("NAMENODE").anyTimes();
Map hdfsComponents=Collections.singletonMap("NAMENODE",namenode);
expect(hdfsService.getServiceComponents()).andReturn(hdfsComponents).anyTimes();
Service hbaseService=createMock(Service.class);
expect(cluster.getService("HBASE")).andReturn(hbaseService).atLeastOnce();
expect(hbaseService.getCluster()).andReturn(cluster).anyTimes();
ServiceComponent hbaseMaster=createMock(ServiceComponent.class);
expect(hbaseMaster.getName()).andReturn("HBASE_MASTER").anyTimes();
Map hbaseComponents=Collections.singletonMap("HBASE_MASTER",hbaseMaster);
expect(hbaseService.getServiceComponents()).andReturn(hbaseComponents).anyTimes();
Map installedServices=new HashMap();
installedServices.put("HDFS",hdfsService);
installedServices.put("HBASE",hbaseService);
expect(cluster.getServices()).andReturn(installedServices).atLeastOnce();
expect(cluster.getService("HDFS")).andReturn(hdfsService).atLeastOnce();
expect(cluster.getService("GLUSTERFS")).andReturn(null);
expect(cluster.getService("YARN")).andReturn(null);
expect(hdfsService.getServiceComponent("JOURNALNODE")).andReturn(null);
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.0.5"));
replay(cluster,hdfsService,hbaseService,hbaseMaster,namenode);
rco.initialize(cluster);
Set transitiveServices=rco.getTransitiveServices(cluster.getService("HBASE"),RoleCommand.START);
Assert.assertNotNull(transitiveServices);
Assert.assertFalse(transitiveServices.isEmpty());
Assert.assertEquals(1,transitiveServices.size());
Assert.assertTrue(transitiveServices.contains(hdfsService));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testInitializeAtHaRMCluster() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=createMock(ClusterImpl.class);
ServiceComponentHost sch1=createMock(ServiceComponentHostImpl.class);
ServiceComponentHost sch2=createMock(ServiceComponentHostImpl.class);
expect(cluster.getService("GLUSTERFS")).andReturn(null);
Map hostComponents=new HashMap();
hostComponents.put("1",sch1);
hostComponents.put("2",sch2);
Service yarnService=createMock(Service.class);
ServiceComponent resourcemanagerSC=createMock(ServiceComponent.class);
expect(cluster.getService("YARN")).andReturn(yarnService).atLeastOnce();
expect(cluster.getService("HDFS")).andReturn(null);
expect(yarnService.getServiceComponent("RESOURCEMANAGER")).andReturn(resourcemanagerSC).anyTimes();
expect(resourcemanagerSC.getServiceComponentHosts()).andReturn(hostComponents).anyTimes();
expect(cluster.getCurrentStackVersion()).andReturn(new StackId("HDP","2.0.6"));
replay(cluster,yarnService,sch1,sch2,resourcemanagerSC);
Map> deps=rco.getDependencies();
assertTrue("Dependencies are empty before initialization",deps.size() == 0);
rco.initialize(cluster);
assertTrue("Dependencies are loaded after initialization",deps.size() > 0);
verify(cluster,yarnService);
assertFalse(dependenciesContainBlockedRole(deps,Role.PEERSTATUS));
assertFalse(dependenciesContainBlockedRole(deps,Role.GLUSTERFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockedRole(deps,Role.GLUSTERFS_CLIENT));
assertFalse(dependenciesContainBlockerRole(deps,Role.PEERSTATUS));
assertFalse(dependenciesContainBlockerRole(deps,Role.GLUSTERFS_SERVICE_CHECK));
assertFalse(dependenciesContainBlockerRole(deps,Role.GLUSTERFS_CLIENT));
assertTrue(dependenciesContainBlockerRole(deps,Role.DATANODE));
RoleCommandPair rmPair=new RoleCommandPair(Role.RESOURCEMANAGER,RoleCommand.START);
Set rmRoleCommandPairs=deps.get(rmPair);
assertNotNull(rmRoleCommandPairs);
boolean isZookeeperStartPresent=false;
for ( RoleCommandPair pair : rmRoleCommandPairs) {
if (pair.cmd == RoleCommand.START && pair.getRole() == Role.ZOOKEEPER_SERVER) {
isZookeeperStartPresent=true;
}
}
assertTrue(isZookeeperStartPresent);
}
Class: org.apache.ambari.server.metadata.RoleGraphTest InternalCallVerifier EqualityVerifier
@Test public void testValidateOrder() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=mock(ClusterImpl.class);
when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.0.6"));
rco.initialize(cluster);
RoleGraphNode datanode_upgrade=new RoleGraphNode(Role.DATANODE,RoleCommand.UPGRADE);
RoleGraphNode hdfs_client_upgrade=new RoleGraphNode(Role.HDFS_CLIENT,RoleCommand.UPGRADE);
Assert.assertEquals(-1,rco.order(datanode_upgrade,hdfs_client_upgrade));
Assert.assertEquals(1,rco.order(hdfs_client_upgrade,datanode_upgrade));
RoleGraphNode namenode_upgrade=new RoleGraphNode(Role.NAMENODE,RoleCommand.UPGRADE);
RoleGraphNode ganglia_server_upgrade=new RoleGraphNode(Role.GANGLIA_SERVER,RoleCommand.UPGRADE);
Assert.assertEquals(1,rco.order(ganglia_server_upgrade,hdfs_client_upgrade));
Assert.assertEquals(1,rco.order(ganglia_server_upgrade,datanode_upgrade));
Assert.assertEquals(-1,rco.order(namenode_upgrade,ganglia_server_upgrade));
RoleGraphNode datanode_start=new RoleGraphNode(Role.DATANODE,RoleCommand.START);
RoleGraphNode datanode_install=new RoleGraphNode(Role.DATANODE,RoleCommand.INSTALL);
RoleGraphNode jobtracker_start=new RoleGraphNode(Role.JOBTRACKER,RoleCommand.START);
Assert.assertEquals(1,rco.order(datanode_start,datanode_install));
Assert.assertEquals(1,rco.order(jobtracker_start,datanode_start));
Assert.assertEquals(0,rco.order(jobtracker_start,jobtracker_start));
RoleGraphNode pig_service_check=new RoleGraphNode(Role.PIG_SERVICE_CHECK,RoleCommand.SERVICE_CHECK);
RoleGraphNode resourcemanager_start=new RoleGraphNode(Role.RESOURCEMANAGER,RoleCommand.START);
Assert.assertEquals(-1,rco.order(resourcemanager_start,pig_service_check));
RoleGraphNode hdfs_service_check=new RoleGraphNode(Role.HDFS_SERVICE_CHECK,RoleCommand.SERVICE_CHECK);
RoleGraphNode snamenode_start=new RoleGraphNode(Role.SECONDARY_NAMENODE,RoleCommand.START);
Assert.assertEquals(-1,rco.order(snamenode_start,hdfs_service_check));
RoleGraphNode mapred2_service_check=new RoleGraphNode(Role.MAPREDUCE2_SERVICE_CHECK,RoleCommand.SERVICE_CHECK);
RoleGraphNode rm_start=new RoleGraphNode(Role.RESOURCEMANAGER,RoleCommand.START);
RoleGraphNode nm_start=new RoleGraphNode(Role.NODEMANAGER,RoleCommand.START);
RoleGraphNode hs_start=new RoleGraphNode(Role.HISTORYSERVER,RoleCommand.START);
Assert.assertEquals(-1,rco.order(rm_start,mapred2_service_check));
Assert.assertEquals(-1,rco.order(nm_start,mapred2_service_check));
Assert.assertEquals(-1,rco.order(hs_start,mapred2_service_check));
Assert.assertEquals(-1,rco.order(hs_start,mapred2_service_check));
Assert.assertEquals(1,rco.order(nm_start,rm_start));
RoleGraphNode nn_start=new RoleGraphNode(Role.NAMENODE,RoleCommand.START);
RoleGraphNode jn_start=new RoleGraphNode(Role.JOURNALNODE,RoleCommand.START);
RoleGraphNode zk_server_start=new RoleGraphNode(Role.ZOOKEEPER_SERVER,RoleCommand.START);
RoleGraphNode hbase_master_start=new RoleGraphNode(Role.HBASE_MASTER,RoleCommand.START);
RoleGraphNode hive_srv_start=new RoleGraphNode(Role.HIVE_SERVER,RoleCommand.START);
RoleGraphNode hive_ms_start=new RoleGraphNode(Role.HIVE_METASTORE,RoleCommand.START);
RoleGraphNode mysql_start=new RoleGraphNode(Role.MYSQL_SERVER,RoleCommand.START);
RoleGraphNode oozie_srv_start=new RoleGraphNode(Role.OOZIE_SERVER,RoleCommand.START);
RoleGraphNode webhcat_srv_start=new RoleGraphNode(Role.WEBHCAT_SERVER,RoleCommand.START);
RoleGraphNode flume_start=new RoleGraphNode(Role.FLUME_HANDLER,RoleCommand.START);
RoleGraphNode zkfc_start=new RoleGraphNode(Role.ZKFC,RoleCommand.START);
Assert.assertEquals(0,rco.order(nn_start,jn_start));
Assert.assertEquals(0,rco.order(nn_start,zk_server_start));
Assert.assertEquals(0,rco.order(zkfc_start,nn_start));
Assert.assertEquals(1,rco.order(flume_start,oozie_srv_start));
Assert.assertEquals(1,rco.order(hbase_master_start,zk_server_start));
Assert.assertEquals(1,rco.order(hive_srv_start,mysql_start));
Assert.assertEquals(1,rco.order(hive_ms_start,mysql_start));
Assert.assertEquals(1,rco.order(webhcat_srv_start,datanode_start));
Service hdfsServiceMock=mock(Service.class);
ServiceComponent jnComponentMock=mock(ServiceComponent.class);
when(cluster.getService("HDFS")).thenReturn(hdfsServiceMock);
when(hdfsServiceMock.getServiceComponent("JOURNALNODE")).thenReturn(jnComponentMock);
rco.initialize(cluster);
Assert.assertEquals(1,rco.order(nn_start,jn_start));
Assert.assertEquals(1,rco.order(nn_start,zk_server_start));
Assert.assertEquals(1,rco.order(zkfc_start,nn_start));
}
Class: org.apache.ambari.server.notifications.DispatchFactoryTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Verify that know {@link NotificationDispatcher}s are registered via the
* Guice {@link Module} and that they singletons.
* @throws Exception
*/
@Test public void testDispatchFactoryRegistration() throws Exception {
String sourceResourceDirectory="src" + File.separator + "test"+ File.separator+ "resources";
Properties properties=new Properties();
properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY,"in-memory");
properties.setProperty(Configuration.OS_VERSION_KEY,"centos6");
properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY,sourceResourceDirectory);
Injector injector=Guice.createInjector(new ControllerModule(properties));
DispatchFactory dispatchFactory=injector.getInstance(DispatchFactory.class);
DispatchFactory dispatchFactory2=injector.getInstance(DispatchFactory.class);
Assert.assertEquals(dispatchFactory,dispatchFactory2);
EmailDispatcher emailDispatcher=injector.getInstance(EmailDispatcher.class);
EmailDispatcher emailDispatcher2=(EmailDispatcher)dispatchFactory.getDispatcher(emailDispatcher.getType());
Assert.assertNotNull(emailDispatcher);
Assert.assertNotNull(emailDispatcher2);
Assert.assertEquals(emailDispatcher,emailDispatcher2);
SNMPDispatcher snmpDispatcher=injector.getInstance(SNMPDispatcher.class);
SNMPDispatcher snmpDispatcher2=(SNMPDispatcher)dispatchFactory.getDispatcher(snmpDispatcher.getType());
Assert.assertNotNull(snmpDispatcher);
Assert.assertNotNull(snmpDispatcher2);
Assert.assertEquals(snmpDispatcher,snmpDispatcher2);
}
Class: org.apache.ambari.server.notifications.dispatchers.EmailDispatcherTest InternalCallVerifier EqualityVerifier
@Test public void testValidateTargetConfig_validIfNoErrors() throws Exception {
Map properties=new HashMap();
Transport mockedTransport=EasyMock.createNiceMock(Transport.class);
EmailDispatcher dispatcher=EasyMock.createMockBuilder(EmailDispatcher.class).addMockedMethods("getMailTransport").createNiceMock();
EasyMock.expect(dispatcher.getMailTransport(properties)).andReturn(mockedTransport);
EasyMock.replay(dispatcher,mockedTransport);
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
Assert.assertEquals(TargetConfigurationResult.Status.VALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateTargetConfig_invalidOnMessagingException() throws Exception {
Map properties=new HashMap();
Transport mockedTransport=EasyMock.createNiceMock(Transport.class);
EmailDispatcher dispatcher=EasyMock.createMockBuilder(EmailDispatcher.class).addMockedMethods("getMailTransport").createNiceMock();
EasyMock.expect(dispatcher.getMailTransport(properties)).andReturn(mockedTransport);
mockedTransport.connect();
EasyMock.expectLastCall().andThrow(new MessagingException());
EasyMock.replay(dispatcher,mockedTransport);
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
Assert.assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateTargetConfig_invalidOnAuthenticationException() throws Exception {
Map properties=new HashMap();
Transport mockedTransport=EasyMock.createNiceMock(Transport.class);
EmailDispatcher dispatcher=EasyMock.createMockBuilder(EmailDispatcher.class).addMockedMethods("getMailTransport").createNiceMock();
EasyMock.expect(dispatcher.getMailTransport(properties)).andReturn(mockedTransport);
mockedTransport.connect();
EasyMock.expectLastCall().andThrow(new AuthenticationFailedException());
EasyMock.replay(dispatcher,mockedTransport);
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
Assert.assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
Class: org.apache.ambari.server.notifications.dispatchers.SNMPDispatcherTest InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_AuthPriv_valid() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_AUTH_PASSPHRASE_PROPERTY,"PASSPHRASE1");
properties.put(SNMPDispatcher.SECURITY_PRIV_PASSPHRASE_PROPERTY,"PASSPHRASE2");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"AUTH_PRIV");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.VALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_AuthPriv_onlyAuthPassphrase() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_AUTH_PASSPHRASE_PROPERTY,"PASSPHRASE1");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"AUTH_PRIV");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv1() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv1");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.COMMUNITY_PROPERTY,"public");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.VALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_incorrectSNMPversion() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv4");
properties.put(SNMPDispatcher.COMMUNITY_PROPERTY,"public");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testSendTraps_v2() throws Exception {
SNMPDispatcher.SnmpVersion snmpVersion=SNMPDispatcher.SnmpVersion.SNMPv2c;
Snmp snmp=mock(Snmp.class);
SNMPDispatcher dispatcher=spy(new SNMPDispatcher(snmp));
PDU trap=mock(PDU.class);
Notification notification=new Notification();
Map properties=new HashMap();
properties.put(SNMPDispatcher.COMMUNITY_PROPERTY,"public");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
notification.DispatchProperties=properties;
Recipient rec1=new Recipient();
rec1.Identifier="192.168.0.2";
notification.Recipients=Arrays.asList(rec1);
doReturn(trap).when(dispatcher).prepareTrap(notification,snmpVersion);
dispatcher.sendTraps(notification,snmpVersion);
ArgumentCaptor argument=ArgumentCaptor.forClass(Target.class);
verify(snmp,times(1)).send(eq(trap),argument.capture());
assertEquals("192.168.0.2/162",argument.getValue().getAddress().toString());
assertEquals(SnmpConstants.version2c,argument.getValue().getVersion());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv2c() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv2c");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.COMMUNITY_PROPERTY,"public");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.VALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testSendTraps_v3() throws Exception {
SNMPDispatcher.SnmpVersion snmpVersion=SNMPDispatcher.SnmpVersion.SNMPv3;
Snmp snmp=mock(Snmp.class);
SNMPDispatcher dispatcher=spy(new SNMPDispatcher(snmp));
PDU trap=mock(PDU.class);
Notification notification=new Notification();
Map properties=new HashMap();
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_AUTH_PASSPHRASE_PROPERTY,"PASSPHRASE1");
properties.put(SNMPDispatcher.SECURITY_PRIV_PASSPHRASE_PROPERTY,"PASSPHRASE2");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"AUTH_NOPRIV");
notification.DispatchProperties=properties;
Recipient rec1=new Recipient();
rec1.Identifier="192.168.0.2";
notification.Recipients=Arrays.asList(rec1);
doReturn(trap).when(dispatcher).prepareTrap(notification,snmpVersion);
dispatcher.sendTraps(notification,snmpVersion);
ArgumentCaptor argument=ArgumentCaptor.forClass(Target.class);
verify(snmp,times(1)).send(eq(trap),argument.capture());
assertEquals("192.168.0.2/162",argument.getValue().getAddress().toString());
assertEquals(SnmpConstants.version3,argument.getValue().getVersion());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_AuthPriv_noPassphrases() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"AUTH_PRIV");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv2c_invalid() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv2c");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv1_invalid() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv1");
properties.put(SNMPDispatcher.COMMUNITY_PROPERTY,"public");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testSendTraps_v1() throws Exception {
SNMPDispatcher.SnmpVersion snmpVersion=SNMPDispatcher.SnmpVersion.SNMPv1;
Snmp snmp=mock(Snmp.class);
SNMPDispatcher dispatcher=spy(new SNMPDispatcher(snmp));
PDU trap=mock(PDU.class);
Notification notification=new Notification();
Map properties=new HashMap();
properties.put(SNMPDispatcher.COMMUNITY_PROPERTY,"public");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
notification.DispatchProperties=properties;
Recipient rec1=new Recipient();
rec1.Identifier="192.168.0.2";
notification.Recipients=Arrays.asList(rec1);
doReturn(trap).when(dispatcher).prepareTrap(notification,snmpVersion);
dispatcher.sendTraps(notification,snmpVersion);
ArgumentCaptor argument=ArgumentCaptor.forClass(Target.class);
verify(snmp,times(1)).send(eq(trap),argument.capture());
assertEquals("192.168.0.2/162",argument.getValue().getAddress().toString());
assertEquals(SnmpConstants.version1,argument.getValue().getVersion());
}
InternalCallVerifier EqualityVerifier
@Test public void testPrepareTrap_v1() throws Exception {
SNMPDispatcher.SnmpVersion snmpVersion=SNMPDispatcher.SnmpVersion.SNMPv1;
SNMPDispatcher dispatcher=new SNMPDispatcher();
Notification notification=new Notification();
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"3");
notification.DispatchProperties=properties;
notification.Body="body";
notification.Subject="subject";
PDU pdu=dispatcher.prepareTrap(notification,snmpVersion);
assertEquals(PDU.V1TRAP,pdu.getType());
Map variableBindings=new HashMap();
for ( VariableBinding variableBinding : pdu.toArray()) {
variableBindings.put(variableBinding.getOid().toString(),variableBinding);
}
assertEquals(3,variableBindings.size());
assertEquals("subject",variableBindings.get("1").toValueString());
assertEquals("body",variableBindings.get("2").toValueString());
assertEquals("3",variableBindings.get(SnmpConstants.snmpTrapOID.toString()).toValueString());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_AuthNoPriv_invalid() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"AUTH_NOPRIV");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_incorrectSecurityLevel() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_AUTH_PASSPHRASE_PROPERTY,"PASSPHRASE1");
properties.put(SNMPDispatcher.SECURITY_PRIV_PASSPHRASE_PROPERTY,"PASSPHRASE2");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"INCORRECT");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.INVALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_noAuthNoPriv() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"NOAUTH_NOPRIV");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.VALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAlertValidation_SNMPv3_AuthNoPriv_valid() throws Exception {
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.PORT_PROPERTY,"162");
properties.put(SNMPDispatcher.SNMP_VERSION_PROPERTY,"SNMPv3");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"1.3.6.1.6.3.1.1.5.4");
properties.put(SNMPDispatcher.SECURITY_USERNAME_PROPERTY,"USER");
properties.put(SNMPDispatcher.SECURITY_AUTH_PASSPHRASE_PROPERTY,"PASSPHRASE1");
properties.put(SNMPDispatcher.SECURITY_LEVEL_PROPERTY,"AUTH_NOPRIV");
NotificationDispatcher dispatcher=new SNMPDispatcher();
TargetConfigurationResult configValidationResult=dispatcher.validateTargetConfig(properties);
assertEquals(TargetConfigurationResult.Status.VALID,configValidationResult.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testPrepareTrap_v2c() throws Exception {
SNMPDispatcher.SnmpVersion snmpVersion=SNMPDispatcher.SnmpVersion.SNMPv2c;
SNMPDispatcher dispatcher=new SNMPDispatcher();
Notification notification=new Notification();
Map properties=new HashMap();
properties.put(SNMPDispatcher.SUBJECT_OID_PROPERTY,"1");
properties.put(SNMPDispatcher.BODY_OID_PROPERTY,"2");
properties.put(SNMPDispatcher.TRAP_OID_PROPERTY,"4");
notification.DispatchProperties=properties;
notification.Body="body";
notification.Subject="subject";
PDU pdu=dispatcher.prepareTrap(notification,snmpVersion);
assertEquals(PDU.TRAP,pdu.getType());
Map variableBindings=new HashMap();
for ( VariableBinding variableBinding : pdu.toArray()) {
variableBindings.put(variableBinding.getOid().toString(),variableBinding);
}
assertEquals(3,variableBindings.size());
assertEquals("subject",variableBindings.get("1").toValueString());
assertEquals("body",variableBindings.get("2").toValueString());
assertEquals("4",variableBindings.get(SnmpConstants.snmpTrapOID.toString()).toValueString());
}
Class: org.apache.ambari.server.orm.DBAccessorImplTest APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testUpdateTable() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
dbAccessor.updateTable(tableName,"name","blah","where id = 1");
Statement statement=dbAccessor.getConnection().createStatement();
ResultSet resultSet=statement.executeQuery("select name from " + tableName);
while (resultSet.next()) {
assertEquals(resultSet.getString("name"),"blah");
}
resultSet.close();
}
InternalCallVerifier BooleanVerifier
@Test public void testTableExists() throws Exception {
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
Statement statement=dbAccessor.getConnection().createStatement();
String tableName=getFreeTableName();
statement.execute("Create table " + tableName + " (id VARCHAR(255))");
Assert.assertTrue(dbAccessor.tableExists(tableName));
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testAddColumnWithDefault() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
dbAccessor.executeQuery("insert into " + tableName + "(id, name, time) values(1, 'Bob', 1234567)");
dbAccessor.addColumn(tableName,new DBColumnInfo("test",String.class,1000,"test",false));
Statement statement=dbAccessor.getConnection().createStatement();
ResultSet resultSet=statement.executeQuery("select * from " + tableName);
int count=0;
while (resultSet.next()) {
assertEquals(resultSet.getString("test"),"test");
count++;
}
assertEquals(count,1);
}
InternalCallVerifier BooleanVerifier
@Test public void testTableHasFKConstraint() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
List columns=new ArrayList();
columns.add(new DBColumnInfo("fid",Long.class,null,null,false));
columns.add(new DBColumnInfo("fname",String.class,null,null,false));
String foreignTableName=getFreeTableName();
dbAccessor.createTable(foreignTableName,columns,"fid");
Statement statement=dbAccessor.getConnection().createStatement();
statement.execute("ALTER TABLE " + foreignTableName + " ADD CONSTRAINT FK_test FOREIGN KEY (fid) REFERENCES "+ tableName+ " (id)");
Assert.assertTrue(dbAccessor.tableHasForeignKey(foreignTableName,tableName,"fid","id"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSetNullable() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
dbAccessor.addColumn(tableName,new DBColumnInfo("isNullable",String.class,1000,"test",false));
Statement statement=dbAccessor.getConnection().createStatement();
ResultSet resultSet=statement.executeQuery("SELECT isNullable FROM " + tableName);
ResultSetMetaData rsmd=resultSet.getMetaData();
assertEquals(ResultSetMetaData.columnNullable,rsmd.isNullable(1));
statement.close();
dbAccessor.setColumnNullable(tableName,new DBColumnInfo("isNullable",String.class,1000,"test",false),false);
statement=dbAccessor.getConnection().createStatement();
resultSet=statement.executeQuery("SELECT isNullable FROM " + tableName);
rsmd=resultSet.getMetaData();
assertEquals(ResultSetMetaData.columnNoNulls,rsmd.isNullable(1));
statement.close();
dbAccessor.setColumnNullable(tableName,new DBColumnInfo("isNullable",String.class,1000,"test",false),true);
statement=dbAccessor.getConnection().createStatement();
resultSet=statement.executeQuery("SELECT isNullable FROM " + tableName);
rsmd=resultSet.getMetaData();
assertEquals(ResultSetMetaData.columnNullable,rsmd.isNullable(1));
statement.close();
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testAddColumn() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
DBColumnInfo dbColumnInfo=new DBColumnInfo("description",String.class,null,null,true);
dbAccessor.addColumn(tableName,dbColumnInfo);
Statement statement=dbAccessor.getConnection().createStatement();
statement.execute("update " + tableName + " set description = 'blah' where id = 1");
ResultSet resultSet=statement.executeQuery("select description from " + tableName);
while (resultSet.next()) {
assertEquals(resultSet.getString("description"),"blah");
}
resultSet.close();
}
InternalCallVerifier EqualityVerifier
@Test public void testDbType() throws Exception {
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
assertEquals(DBAccessor.DbType.DERBY,dbAccessor.getDbType());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetCheckedForeignKey() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
List columns=new ArrayList();
columns.add(new DBColumnInfo("fid",Long.class,null,null,false));
columns.add(new DBColumnInfo("fname",String.class,null,null,false));
String foreignTableName=getFreeTableName();
dbAccessor.createTable(foreignTableName,columns,"fid");
Statement statement=dbAccessor.getConnection().createStatement();
statement.execute("ALTER TABLE " + foreignTableName + " ADD CONSTRAINT FK_test1 FOREIGN KEY (fid) REFERENCES "+ tableName+ " (id)");
Assert.assertEquals("FK_TEST1",dbAccessor.getCheckedForeignKey(foreignTableName,"fk_test1"));
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testAddFKConstraint() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
List columns=new ArrayList();
columns.add(new DBColumnInfo("fid",Long.class,null,null,false));
columns.add(new DBColumnInfo("fname",String.class,null,null,false));
String foreignTableName=getFreeTableName();
dbAccessor.createTable(foreignTableName,columns,"fid");
dbAccessor.addFKConstraint(foreignTableName,"MYFKCONSTRAINT","fid",tableName,"id",false);
Statement statement=dbAccessor.getConnection().createStatement();
statement.execute("insert into " + tableName + "(id, name) values(1,'hello')");
statement.execute("insert into " + foreignTableName + "(fid, fname) values(1,'howdy')");
ResultSet resultSet=statement.executeQuery("select * from " + foreignTableName);
int count=0;
while (resultSet.next()) {
assertEquals(resultSet.getString("fname"),"howdy");
count++;
}
resultSet.close();
assertEquals(count,1);
exception.expect(SQLException.class);
exception.expectMessage(containsString("MYFKCONSTRAINT"));
dbAccessor.dropTable(tableName);
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testAlterColumn() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
ResultSet rs;
DBColumnInfo fromColumn;
DBColumnInfo toColumn;
Statement statement=dbAccessor.getConnection().createStatement();
final String dataString="Data for inserting column.";
toColumn=new DBColumnInfo("name",String.class,500,null,true);
statement.execute(String.format("INSERT INTO %s(id, name) VALUES (1, '%s')",tableName,dataString));
dbAccessor.alterColumn(tableName,toColumn);
rs=statement.executeQuery(String.format("SELECT name FROM %s",tableName));
while (rs.next()) {
ResultSetMetaData rsm=rs.getMetaData();
assertEquals(rs.getString(toColumn.getName()),dataString);
assertEquals(rsm.getColumnTypeName(1),"VARCHAR");
assertEquals(rsm.getColumnDisplaySize(1),500);
}
rs.close();
toColumn=new DBColumnInfo("name",char[].class,999,null,true);
dbAccessor.alterColumn(tableName,toColumn);
rs=statement.executeQuery(String.format("SELECT name FROM %s",tableName));
while (rs.next()) {
ResultSetMetaData rsm=rs.getMetaData();
Clob clob=rs.getClob(toColumn.getName());
assertEquals(clob.getSubString(1,(int)clob.length()),dataString);
assertEquals(rsm.getColumnTypeName(1),"CLOB");
assertEquals(rsm.getColumnDisplaySize(1),999);
}
rs.close();
toColumn=new DBColumnInfo("name_blob_to_clob",char[].class,567,null,true);
fromColumn=new DBColumnInfo("name_blob_to_clob",byte[].class,20000,null,true);
dbAccessor.addColumn(tableName,fromColumn);
String sql=String.format("insert into %s(id, name_blob_to_clob) values (2, ?)",tableName);
PreparedStatement preparedStatement=dbAccessor.getConnection().prepareStatement(sql);
preparedStatement.setBinaryStream(1,new ByteArrayInputStream(dataString.getBytes()),dataString.getBytes().length);
preparedStatement.executeUpdate();
preparedStatement.close();
dbAccessor.alterColumn(tableName,toColumn);
rs=statement.executeQuery(String.format("SELECT name_blob_to_clob FROM %s WHERE id=2",tableName));
while (rs.next()) {
ResultSetMetaData rsm=rs.getMetaData();
Clob clob=rs.getClob(toColumn.getName());
assertEquals(clob.getSubString(1,(int)clob.length()),dataString);
assertEquals(rsm.getColumnTypeName(1),"CLOB");
assertEquals(rsm.getColumnDisplaySize(1),567);
}
rs.close();
toColumn=new DBColumnInfo("name_blob_to_clob",char[].class,1500,null,true);
dbAccessor.alterColumn(tableName,toColumn);
rs=statement.executeQuery(String.format("SELECT name_blob_to_clob FROM %s WHERE id=2",tableName));
while (rs.next()) {
ResultSetMetaData rsm=rs.getMetaData();
Clob clob=rs.getClob(toColumn.getName());
assertEquals(clob.getSubString(1,(int)clob.length()),dataString);
assertEquals(rsm.getColumnTypeName(1),"CLOB");
assertEquals(rsm.getColumnDisplaySize(1),1500);
}
rs.close();
dbAccessor.dropTable(tableName);
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testRenameColumn() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
dbAccessor.executeQuery("insert into " + tableName + "(id, name, time) values(1, 'Bob', 1234567)");
dbAccessor.renameColumn(tableName,"time",new DBColumnInfo("new_time",Long.class,0,null,true));
Statement statement=dbAccessor.getConnection().createStatement();
ResultSet resultSet=statement.executeQuery("select new_time from " + tableName + " where id=1");
int count=0;
while (resultSet.next()) {
count++;
long newTime=resultSet.getLong("new_time");
assertEquals(newTime,1234567L);
}
assertEquals(count,1);
}
InternalCallVerifier BooleanVerifier
@Test public void testColumnExists() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
Assert.assertTrue(dbAccessor.tableHasColumn(tableName,"time"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetColumnType() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
assertEquals(Types.BIGINT,dbAccessor.getColumnType(tableName,"id"));
assertEquals(Types.VARCHAR,dbAccessor.getColumnType(tableName,"name"));
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier
@Test public void testCreateTable() throws Exception {
String tableName=getFreeTableName();
createMyTable(tableName);
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
Statement statement=dbAccessor.getConnection().createStatement();
statement.execute(String.format("insert into %s(id, name) values(1,'hello')",tableName));
ResultSet resultSet=statement.executeQuery(String.format("select * from %s",tableName));
int count=0;
while (resultSet.next()) {
assertEquals(resultSet.getString("name"),"hello");
count++;
}
assertEquals(count,1);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDBSession() throws Exception {
DBAccessorImpl dbAccessor=injector.getInstance(DBAccessorImpl.class);
String tableName=getFreeTableName();
createMyTable(tableName);
dbAccessor.executeQuery("insert into " + tableName + "(id, name, time) values(1, 'Bob', 1234567)");
DatabaseSession databaseSession=dbAccessor.getNewDatabaseSession();
databaseSession.login();
Vector vector=databaseSession.executeSQL("select * from " + tableName + " where id=1");
assertEquals(vector.size(),1);
Map map=(Map)vector.get(0);
assertEquals("Bob",map.get("name".toUpperCase()));
databaseSession.logout();
}
Class: org.apache.ambari.server.orm.TestOrmImpl InternalCallVerifier BooleanVerifier
@Test public void testSortedCommands(){
injector.getInstance(OrmTestHelper.class).createStageCommands();
HostRoleCommandDAO hostRoleCommandDAO=injector.getInstance(HostRoleCommandDAO.class);
HostDAO hostDAO=injector.getInstance(HostDAO.class);
StageDAO stageDAO=injector.getInstance(StageDAO.class);
List list=hostRoleCommandDAO.findSortedCommandsByStageAndHost(stageDAO.findByActionId("1-1"),hostDAO.findByName("test_host1"));
log.info("command '{}' - taskId '{}' ",list.get(0).getRoleCommand(),list.get(0).getTaskId());
log.info("command '{}' - taskId '{}'",list.get(1).getRoleCommand(),list.get(1).getTaskId());
assertTrue(list.get(0).getTaskId() < list.get(1).getTaskId());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindHostsByStage(){
injector.getInstance(OrmTestHelper.class).createStageCommands();
HostDAO hostDAO=injector.getInstance(HostDAO.class);
StageDAO stageDAO=injector.getInstance(StageDAO.class);
StageEntity stageEntity=stageDAO.findByActionId("1-1");
log.info("StageEntity {} {}" + stageEntity.getRequestId() + " "+ stageEntity.getStageId());
List hosts=hostDAO.findByStage(stageEntity);
assertEquals(2,hosts.size());
}
InternalCallVerifier NullVerifier
/**
* Test auto incremented field and custom query example
*/
@Test public void testAutoIncrementedField(){
ClusterServiceDAO clusterServiceDAO=injector.getInstance(ClusterServiceDAO.class);
Date currentTime=new Date();
String serviceName="MapReduce1";
String clusterName="test_cluster1";
createService(currentTime,serviceName,clusterName);
ClusterServiceEntity clusterServiceEntity=clusterServiceDAO.findByClusterAndServiceNames(clusterName,serviceName);
clusterServiceDAO.remove(clusterServiceEntity);
assertNull(clusterServiceDAO.findByClusterAndServiceNames(clusterName,serviceName));
}
InternalCallVerifier NullVerifier
/**
* Rollback test
*/
@Test public void testSafeRollback(){
String testClusterName="don't save";
EntityManager entityManager=injector.getInstance(OrmTestHelper.class).getEntityManager();
entityManager.getTransaction().begin();
ClusterEntity clusterEntity=new ClusterEntity();
clusterEntity.setClusterName(testClusterName);
entityManager.persist(clusterEntity);
entityManager.getTransaction().rollback();
assertNull("transaction was not rolled back",injector.getInstance(ClusterDAO.class).findByName(testClusterName));
}
InternalCallVerifier EqualityVerifier
@Test public void testLastRequestId(){
injector.getInstance(OrmTestHelper.class).createStageCommands();
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
StageDAO stageDAO=injector.getInstance(StageDAO.class);
RequestDAO requestDAO=injector.getInstance(RequestDAO.class);
RequestEntity requestEntity=requestDAO.findByPK(1L);
List stageEntities=new ArrayList();
StageEntity stageEntity=new StageEntity();
stageEntity.setClusterId(clusterDAO.findByName("test_cluster1").getClusterId());
stageEntity.setRequest(requestEntity);
stageEntity.setStageId(2L);
stageDAO.create(stageEntity);
StageEntity stageEntity2=new StageEntity();
stageEntity2.setClusterId(clusterDAO.findByName("test_cluster1").getClusterId());
stageEntity2.setRequest(requestEntity);
stageEntity2.setRequestId(1L);
stageEntity2.setStageId(3L);
stageDAO.create(stageEntity2);
stageEntities.add(stageEntity);
stageEntities.add(stageEntity2);
requestEntity.setStages(stageEntities);
requestDAO.merge(requestEntity);
assertEquals(1L,stageDAO.getLastRequestId());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindStageByHostRole(){
injector.getInstance(OrmTestHelper.class).createStageCommands();
HostRoleCommandDAO hostRoleCommandDAO=injector.getInstance(HostRoleCommandDAO.class);
List list=hostRoleCommandDAO.findByHostRole("test_host1",1L,1L,Role.DATANODE.toString());
assertEquals(1,list.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConcurrentModification() throws InterruptedException {
final StackDAO stackDAO=injector.getInstance(StackDAO.class);
final ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
final ResourceTypeDAO resourceTypeDAO=injector.getInstance(ResourceTypeDAO.class);
final StackEntity stackEntity=stackDAO.find("HDP","2.2.0");
ResourceTypeEntity resourceTypeEntity=resourceTypeDAO.findById(ResourceType.CLUSTER.getId());
if (resourceTypeEntity == null) {
resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(ResourceType.CLUSTER.getId());
resourceTypeEntity.setName(ResourceType.CLUSTER.name());
resourceTypeEntity=resourceTypeDAO.merge(resourceTypeEntity);
}
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
ClusterEntity clusterEntity=new ClusterEntity();
clusterEntity.setClusterName("cluster1");
clusterEntity.setResource(resourceEntity);
clusterEntity.setDesiredStack(stackEntity);
clusterDAO.create(clusterEntity);
clusterEntity=clusterDAO.findById(clusterEntity.getClusterId());
assertEquals("cluster1",clusterEntity.getClusterName());
Thread thread=new Thread(){
@Override public void run(){
ClusterEntity clusterEntity1=clusterDAO.findByName("cluster1");
clusterEntity1.setClusterName("anotherName");
clusterDAO.merge(clusterEntity1);
clusterEntity1=clusterDAO.findById(clusterEntity1.getClusterId());
assertEquals("anotherName",clusterEntity1.getClusterName());
injector.getInstance(EntityManager.class).clear();
}
}
;
thread.start();
thread.join();
injector.getInstance(EntityManager.class).clear();
clusterEntity=clusterDAO.findById(clusterEntity.getClusterId());
assertEquals("anotherName",clusterEntity.getClusterName());
thread=new Thread(){
@Override public void run(){
clusterDAO.removeByName("anotherName");
injector.getInstance(EntityManager.class).clear();
}
}
;
thread.start();
thread.join();
injector.getInstance(EntityManager.class).clear();
assertNull(clusterDAO.findById(clusterEntity.getClusterId()));
List result=clusterDAO.findAll();
final ResourceTypeEntity finalResourceTypeEntity=resourceTypeEntity;
thread=new Thread(){
@Override public void run(){
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setResourceType(finalResourceTypeEntity);
ClusterEntity temp=new ClusterEntity();
temp.setClusterName("temp_cluster");
temp.setResource(resourceEntity);
temp.setDesiredStack(stackEntity);
clusterDAO.create(temp);
}
}
;
thread.start();
thread.join();
assertEquals(result.size() + 1,(result=clusterDAO.findAll()).size());
thread=new Thread(){
@Override public void run(){
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setResourceType(finalResourceTypeEntity);
ClusterEntity temp=new ClusterEntity();
temp.setClusterName("temp_cluster2");
temp.setResource(resourceEntity);
temp.setDesiredStack(stackEntity);
clusterDAO.create(temp);
}
}
;
thread.start();
thread.join();
assertEquals(result.size() + 1,(clusterDAO.findAll()).size());
}
InternalCallVerifier NullVerifier
/**
* to clarify: are cascade operations allowed?
*/
@Test public void testCascadeRemoveFail(){
ClusterServiceDAO clusterServiceDAO=injector.getInstance(ClusterServiceDAO.class);
Date currentTime=new Date();
String serviceName="MapReduce2";
String clusterName="test_cluster1";
createService(currentTime,serviceName,clusterName);
ClusterServiceEntity clusterServiceEntity=clusterServiceDAO.findByClusterAndServiceNames(clusterName,serviceName);
clusterServiceDAO.remove(clusterServiceEntity);
Assert.assertNull(clusterServiceDAO.findByClusterAndServiceNames(clusterName,serviceName));
}
InternalCallVerifier BooleanVerifier
/**
* persistence provider is responsible for returning empty collection if relation doesn't exists
*/
@Test public void testEmptyPersistentCollection(){
String testClusterName="test_cluster2";
StackDAO stackDAO=injector.getInstance(StackDAO.class);
ResourceTypeDAO resourceTypeDAO=injector.getInstance(ResourceTypeDAO.class);
ResourceTypeEntity resourceTypeEntity=resourceTypeDAO.findById(ResourceType.CLUSTER.getId());
if (resourceTypeEntity == null) {
resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(ResourceType.CLUSTER.getId());
resourceTypeEntity.setName(ResourceType.CLUSTER.name());
resourceTypeEntity=resourceTypeDAO.merge(resourceTypeEntity);
}
StackEntity stackEntity=stackDAO.find("HDP","2.2.0");
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setResourceType(resourceTypeEntity);
ClusterEntity clusterEntity=new ClusterEntity();
clusterEntity.setClusterName(testClusterName);
clusterEntity.setResource(resourceEntity);
clusterEntity.setDesiredStack(stackEntity);
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
clusterDAO.create(clusterEntity);
clusterEntity=clusterDAO.findByName(clusterEntity.getClusterName());
assertTrue("empty relation wasn't instantiated",clusterEntity.getHostEntities() != null);
}
Class: org.apache.ambari.server.orm.dao.AlertDefinitionDAOTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testCascadeDelete() throws Exception {
AlertDefinitionEntity definition=helper.createAlertDefinition(clusterId);
AlertGroupEntity group=helper.createAlertGroup(clusterId,null);
group.addAlertDefinition(definition);
dispatchDao.merge(group);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(clusterId);
history.setAlertDefinition(definition);
history.setAlertLabel("Label");
history.setAlertState(AlertState.OK);
history.setAlertText("Alert Text");
history.setAlertTimestamp(calendar.getTimeInMillis());
AlertCurrentEntity current=new AlertCurrentEntity();
current.setAlertHistory(history);
current.setLatestTimestamp(new Date().getTime());
current.setOriginalTimestamp(new Date().getTime() - 10800000);
current.setMaintenanceState(MaintenanceState.OFF);
alertsDao.create(current);
AlertNoticeEntity notice=new AlertNoticeEntity();
notice.setAlertHistory(history);
notice.setAlertTarget(helper.createAlertTarget());
notice.setNotifyState(NotificationState.PENDING);
notice.setUuid(UUID.randomUUID().toString());
dispatchDao.create(notice);
group=dispatchDao.findGroupById(group.getGroupId());
assertNotNull(group);
assertNotNull(group.getAlertDefinitions());
assertEquals(1,group.getAlertDefinitions().size());
history=alertsDao.findById(history.getAlertId());
assertNotNull(history);
current=alertsDao.findCurrentById(current.getAlertId());
assertNotNull(current);
assertNotNull(current.getAlertHistory());
notice=dispatchDao.findNoticeById(notice.getNotificationId());
assertNotNull(notice);
assertNotNull(notice.getAlertHistory());
assertNotNull(notice.getAlertTarget());
definition=dao.findById(definition.getDefinitionId());
dao.refresh(definition);
dao.remove(definition);
notice=dispatchDao.findNoticeById(notice.getNotificationId());
assertNull(notice);
current=alertsDao.findCurrentById(current.getAlertId());
assertNull(current);
history=alertsDao.findById(history.getAlertId());
assertNull(history);
group=dispatchDao.findGroupById(group.getGroupId());
assertNotNull(group);
assertNotNull(group.getAlertDefinitions());
assertEquals(0,group.getAlertDefinitions().size());
}
InternalCallVerifier EqualityVerifier
/**
*/
@Test public void testFindByIds(){
List definitions=dao.findAll();
List ids=new ArrayList();
ids.add(definitions.get(0).getDefinitionId());
ids.add(definitions.get(1).getDefinitionId());
ids.add(99999L);
definitions=dao.findByIds(ids);
assertEquals(2,definitions.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindById(){
List definitions=dao.findAll();
assertNotNull(definitions);
AlertDefinitionEntity definition=definitions.get(2);
AlertDefinitionEntity retrieved=dao.findById(definition.getDefinitionId());
assertEquals(definition,retrieved);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testNestedClusterEntity() throws Exception {
AlertDefinitionEntity definition=new AlertDefinitionEntity();
definition.setDefinitionName("nested-cluster-entity-test");
definition.setServiceName("HDFS");
definition.setComponentName(null);
definition.setClusterId(clusterId);
definition.setHash(UUID.randomUUID().toString());
definition.setScheduleInterval(60);
definition.setScope(Scope.SERVICE);
definition.setSource("{\"type\" : \"SCRIPT\"}");
definition.setSourceType(SourceType.SCRIPT);
dao.create(definition);
definition=dao.findById(definition.getDefinitionId());
assertNotNull(definition.getCluster());
assertEquals(clusterId,definition.getCluster().getClusterId());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindByService(){
List definitions=dao.findByService(clusterId,"HDFS");
assertNotNull(definitions);
assertEquals(10,definitions.size());
definitions=dao.findByService(clusterId,"YARN");
assertNotNull(definitions);
assertEquals(0,definitions.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindByServiceComponent(){
List definitions=dao.findByServiceComponent(clusterId,"OOZIE","OOZIE_SERVER");
assertNotNull(definitions);
assertEquals(2,definitions.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindByName(){
List definitions=dao.findAll();
assertNotNull(definitions);
AlertDefinitionEntity definition=definitions.get(2);
AlertDefinitionEntity retrieved=dao.findByName(definition.getClusterId(),definition.getDefinitionName());
assertEquals(definition,retrieved);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testCascadeDeleteForCluster() throws Exception {
AlertDefinitionEntity definition=helper.createAlertDefinition(clusterId);
definition=dao.findById(definition.getDefinitionId());
dao.refresh(definition);
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
ClusterEntity clusterEntity=clusterDAO.findById(clusterId);
clusterDAO.refresh(clusterEntity);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=clusters.getClusterById(clusterId);
cluster.delete();
assertNull(clusterDAO.findById(clusterId));
assertNull(dao.findById(definition.getDefinitionId()));
assertEquals(0,dispatchDao.findAllGroups(clusterId).size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAllEnabled(){
List definitions=dao.findAll();
assertNotNull(definitions);
assertEquals(15,definitions.size());
List enabledDefinitions=dao.findAllEnabled(clusterId);
assertNotNull(enabledDefinitions);
assertEquals(definitions.size(),enabledDefinitions.size());
enabledDefinitions.get(0).setEnabled(false);
dao.merge(enabledDefinitions.get(0));
enabledDefinitions=dao.findAllEnabled(clusterId);
assertNotNull(enabledDefinitions);
assertEquals(definitions.size() - 1,enabledDefinitions.size());
}
InternalCallVerifier NullVerifier
@Test public void testRemove() throws Exception {
AlertDefinitionEntity definition=helper.createAlertDefinition(clusterId);
definition=dao.findById(definition.getDefinitionId());
assertNotNull(definition);
dao.remove(definition);
definition=dao.findById(definition.getDefinitionId());
assertNull(definition);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAgentScoped(){
List definitions=dao.findAgentScoped(clusterId);
assertNotNull(definitions);
assertEquals(3,definitions.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAll(){
List definitions=dao.findAll();
assertNotNull(definitions);
assertEquals(15,definitions.size());
}
Class: org.apache.ambari.server.orm.dao.AlertDispatchDAOTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAllTargets() throws Exception {
List targets=m_dao.findAllTargets();
assertNotNull(targets);
assertEquals(5,targets.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests finding groups by a definition ID that they are associatd with.
* @throws Exception
*/
@Test public void testFindGroupsByDefinition() throws Exception {
List definitions=createDefinitions();
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
for ( AlertDefinitionEntity definition : definitions) {
group.addAlertDefinition(definition);
}
m_dao.merge(group);
group=m_dao.findGroupByName(group.getGroupName());
assertEquals(definitions.size(),group.getAlertDefinitions().size());
for ( AlertDefinitionEntity definition : definitions) {
List groups=m_dao.findGroupsByDefinition(definition);
assertEquals(2,groups.size());
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that when creating a new {@link AlertDefinitionEntity}, if the group
* for its service does not exist, then it will be created.
*/
@Test public void testDefaultGroupAutomaticCreation() throws Exception {
List groups=m_dao.findAllGroups();
assertNotNull(groups);
assertEquals(10,groups.size());
for ( AlertGroupEntity group : groups) {
assertFalse(group.isDefault());
}
Cluster cluster=m_helper.buildNewCluster(m_clusters,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
AlertGroupEntity hdfsGroup=m_dao.findDefaultServiceGroup(cluster.getClusterId(),"HDFS");
m_dao.remove(hdfsGroup);
hdfsGroup=m_dao.findDefaultServiceGroup(cluster.getClusterId(),"HDFS");
assertNull(hdfsGroup);
AlertDefinitionEntity datanodeProcess=new AlertDefinitionEntity();
datanodeProcess.setClusterId(cluster.getClusterId());
datanodeProcess.setDefinitionName("datanode_process");
datanodeProcess.setServiceName("HDFS");
datanodeProcess.setComponentName("DATANODE");
datanodeProcess.setHash(UUID.randomUUID().toString());
datanodeProcess.setScheduleInterval(60);
datanodeProcess.setScope(Scope.SERVICE);
datanodeProcess.setSource("{\"type\" : \"SCRIPT\"}");
datanodeProcess.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(datanodeProcess);
hdfsGroup=m_dao.findDefaultServiceGroup(cluster.getClusterId(),"HDFS");
assertNotNull(hdfsGroup);
assertTrue(hdfsGroup.isDefault());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAllGlobalTargets() throws Exception {
List targets=m_dao.findAllGlobalTargets();
assertNotNull(targets);
assertEquals(0,targets.size());
m_helper.createGlobalAlertTarget();
m_helper.createGlobalAlertTarget();
m_helper.createGlobalAlertTarget();
targets=m_dao.findAllGlobalTargets();
assertEquals(3,targets.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testGlobalTargetAssociations() throws Exception {
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertEquals(0,group.getAlertTargets().size());
AlertTargetEntity target=m_helper.createGlobalAlertTarget();
assertTrue(target.isGlobal());
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertEquals(1,group.getAlertTargets().size());
List groups=m_dao.findAllGroups();
target=m_dao.findTargetById(target.getTargetId());
assertEquals(groups.size(),target.getAlertGroups().size());
m_dao.remove(target);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertEquals(0,group.getAlertTargets().size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that JPA does the pagination work for us.
* @throws Exception
*/
@Test public void testAlertNoticePagination() throws Exception {
Cluster cluster=m_helper.buildNewCluster(m_clusters,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
m_alertHelper.populateData(cluster);
AlertNoticeRequest request=new AlertNoticeRequest();
request.Pagination=null;
List notices=m_dao.findAllNotices(request);
assertEquals(3,notices.size());
request.Pagination=new PageRequestImpl(StartingPoint.Beginning,2,0,null,null);
notices=m_dao.findAllNotices(request);
assertEquals(2,notices.size());
request.Pagination=new PageRequestImpl(StartingPoint.Beginning,1,2,null,null);
notices=m_dao.findAllNotices(request);
assertEquals(1,notices.size());
request.Pagination=new PageRequestImpl(StartingPoint.Beginning,1,3,null,null);
notices=m_dao.findAllNotices(request);
assertEquals(0,notices.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testFindNoticeByUuid() throws Exception {
List definitions=createDefinitions();
AlertDefinitionEntity definition=definitions.get(0);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(definition);
history.setAlertLabel("Label");
history.setAlertState(AlertState.OK);
history.setAlertText("Alert Text");
history.setAlertTimestamp(System.currentTimeMillis());
m_alertsDao.create(history);
AlertTargetEntity target=m_helper.createAlertTarget();
AlertNoticeEntity notice=new AlertNoticeEntity();
notice.setUuid(UUID.randomUUID().toString());
notice.setAlertTarget(target);
notice.setAlertHistory(history);
notice.setNotifyState(NotificationState.PENDING);
m_dao.create(notice);
AlertNoticeEntity actual=m_dao.findNoticeByUuid(notice.getUuid());
assertEquals(notice.getNotificationId(),actual.getNotificationId());
assertNull(m_dao.findNoticeByUuid("DEADBEEF"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindDefaultGroup() throws Exception {
List groups=m_dao.findAllGroups();
assertNotNull(groups);
assertEquals(10,groups.size());
for ( AlertGroupEntity group : groups) {
assertFalse(group.isDefault());
}
Cluster cluster=m_helper.buildNewCluster(m_clusters,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
AlertGroupEntity hdfsGroup=m_dao.findDefaultServiceGroup(cluster.getClusterId(),"HDFS");
assertNotNull(hdfsGroup);
assertTrue(hdfsGroup.isDefault());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that the Ambari {@link Predicate} can be converted and submitted to
* JPA correctly to return a restricted result set.
* @throws Exception
*/
@Test public void testAlertNoticePredicate() throws Exception {
Cluster cluster=m_helper.buildNewCluster(m_clusters,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
m_alertHelper.populateData(cluster);
Predicate clusterPredicate=null;
Predicate hdfsPredicate=null;
Predicate yarnPredicate=null;
Predicate adminPredicate=null;
Predicate adminOrOperatorPredicate=null;
Predicate pendingPredicate=null;
Predicate noticeIdPredicate=null;
clusterPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_CLUSTER_NAME).equals("c1").toPredicate();
hdfsPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_SERVICE_NAME).equals("HDFS").toPredicate();
yarnPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_SERVICE_NAME).equals("YARN").toPredicate();
adminPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_TARGET_NAME).equals("Administrators").toPredicate();
adminOrOperatorPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_TARGET_NAME).equals("Administrators").or().property(AlertNoticeResourceProvider.ALERT_NOTICE_TARGET_NAME).equals("Operators").toPredicate();
pendingPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_STATE).equals(NotificationState.PENDING.name()).toPredicate();
AlertNoticeRequest request=new AlertNoticeRequest();
request.Predicate=clusterPredicate;
List notices=m_dao.findAllNotices(request);
assertEquals(3,notices.size());
request.Predicate=hdfsPredicate;
notices=m_dao.findAllNotices(request);
assertEquals(2,notices.size());
request.Predicate=yarnPredicate;
notices=m_dao.findAllNotices(request);
assertEquals(1,notices.size());
request.Predicate=adminPredicate;
notices=m_dao.findAllNotices(request);
assertEquals(2,notices.size());
request.Predicate=adminOrOperatorPredicate;
notices=m_dao.findAllNotices(request);
assertEquals(3,notices.size());
request.Predicate=pendingPredicate;
notices=m_dao.findAllNotices(request);
assertEquals(1,notices.size());
noticeIdPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_ID).equals(notices.get(0).getNotificationId()).toPredicate();
request.Predicate=noticeIdPredicate;
notices=m_dao.findAllNotices(request);
assertEquals(1,notices.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that a newly created group is correctly associated with all global
* targets.
*/
@Test public void testGlobalTargetAssociatedWithNewGroup() throws Exception {
AlertTargetEntity target1=m_helper.createGlobalAlertTarget();
AlertTargetEntity target2=m_helper.createGlobalAlertTarget();
assertTrue(target1.isGlobal());
assertTrue(target2.isGlobal());
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertEquals(2,group.getAlertTargets().size());
Iterator iterator=group.getAlertTargets().iterator();
AlertTargetEntity groupTarget1=iterator.next();
AlertTargetEntity groupTarget2=iterator.next();
assertTrue(groupTarget1.isGlobal());
assertTrue(groupTarget2.isGlobal());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that JPA does the sorting work for us.
* @throws Exception
*/
@Test public void testAlertNoticeSorting() throws Exception {
Cluster cluster=m_helper.buildNewCluster(m_clusters,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
m_alertHelper.populateData(cluster);
List sortProperties=new ArrayList();
SortRequest sortRequest=new SortRequestImpl(sortProperties);
AlertNoticeRequest request=new AlertNoticeRequest();
request.Sort=sortRequest;
Predicate clusterPredicate=new PredicateBuilder().property(AlertNoticeResourceProvider.ALERT_NOTICE_CLUSTER_NAME).equals("c1").toPredicate();
request.Predicate=clusterPredicate;
sortProperties.add(new SortRequestProperty(AlertNoticeResourceProvider.ALERT_NOTICE_ID,Order.ASC));
List notices=m_dao.findAllNotices(request);
assertEquals(3,notices.size());
long lastId=0L;
for ( AlertNoticeEntity notice : notices) {
if (lastId == 0L) {
lastId=notice.getNotificationId();
continue;
}
long currentId=notice.getNotificationId();
assertTrue(lastId < currentId);
lastId=currentId;
}
sortProperties.clear();
sortProperties.add(new SortRequestProperty(AlertNoticeResourceProvider.ALERT_NOTICE_ID,Order.DESC));
notices=m_dao.findAllNotices(request);
assertEquals(3,notices.size());
lastId=0L;
for ( AlertNoticeEntity notice : notices) {
if (lastId == 0L) {
lastId=notice.getNotificationId();
continue;
}
long currentId=notice.getNotificationId();
assertTrue(lastId > currentId);
lastId=currentId;
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testDeleteAssociatedTarget() throws Exception {
AlertTargetEntity target=m_helper.createAlertTarget();
Set targets=new HashSet();
targets.add(target);
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),targets);
assertEquals(1,group.getAlertTargets().size());
target=m_dao.findTargetById(target.getTargetId());
m_dao.refresh(target);
assertNotNull(target);
assertEquals(1,target.getAlertGroups().size());
m_dao.remove(target);
target=m_dao.findTargetById(target.getTargetId());
assertNull(target);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertEquals(0,group.getAlertTargets().size());
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testDeleteTarget() throws Exception {
AlertTargetEntity target=m_helper.createAlertTarget();
target=m_dao.findTargetById(target.getTargetId());
assertTrue(target.getAlertStates().size() > 0);
assertNotNull(target);
m_dao.remove(target);
target=m_dao.findTargetById(target.getTargetId());
assertNull(target);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* @throws Exception
*/
@Test public void testFindGroupsByIds() throws Exception {
List groups=m_dao.findAllGroups();
assertNotNull(groups);
assertEquals(10,groups.size());
List ids=new ArrayList();
ids.add(groups.get(0).getGroupId());
ids.add(groups.get(1).getGroupId());
ids.add(99999L);
groups=m_dao.findGroupsById(ids);
assertEquals(2,groups.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testDeleteTargetWithNotices() throws Exception {
AlertTargetEntity target=m_helper.createAlertTarget();
List definitions=createDefinitions();
AlertDefinitionEntity definition=definitions.get(0);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(definition);
history.setAlertLabel("Label");
history.setAlertState(AlertState.OK);
history.setAlertText("Alert Text");
history.setAlertTimestamp(System.currentTimeMillis());
m_alertsDao.create(history);
AlertNoticeEntity notice=new AlertNoticeEntity();
notice.setUuid(UUID.randomUUID().toString());
notice.setAlertTarget(target);
notice.setAlertHistory(history);
notice.setNotifyState(NotificationState.PENDING);
m_dao.create(notice);
notice=m_dao.findNoticeById(notice.getNotificationId());
assertEquals(target.getTargetId(),notice.getAlertTarget().getTargetId());
target=m_dao.findTargetById(target.getTargetId());
m_dao.remove(target);
notice=m_dao.findNoticeById(notice.getNotificationId());
assertNull(notice);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindTargetByName() throws Exception {
List targets=m_dao.findAllTargets();
assertNotNull(targets);
AlertTargetEntity target=targets.get(3);
AlertTargetEntity actual=m_dao.findTargetByName(target.getTargetName());
assertEquals(target,actual);
}
InternalCallVerifier EqualityVerifier
/**
*/
@Test public void testUpdateGroup() throws Exception {
AlertTargetEntity target=m_helper.createAlertTarget();
Set targets=new HashSet();
targets.add(target);
String groupName="Group Name " + System.currentTimeMillis();
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
group=m_dao.findGroupById(group.getGroupId());
group.setGroupName(groupName + "FOO");
group.setDefault(true);
m_dao.merge(group);
group=m_dao.findGroupById(group.getGroupId());
assertEquals(groupName + "FOO",group.getGroupName());
assertEquals(true,group.isDefault());
assertEquals(0,group.getAlertDefinitions().size());
assertEquals(0,group.getAlertTargets().size());
group.addAlertTarget(target);
m_dao.merge(group);
group=m_dao.findGroupById(group.getGroupId());
assertEquals(targets,group.getAlertTargets());
}
InternalCallVerifier BooleanVerifier
/**
*/
@Test public void testCreateGlobalTarget() throws Exception {
AlertTargetEntity target=m_helper.createGlobalAlertTarget();
assertTrue(target.isGlobal());
target=m_dao.findTargetByName(target.getTargetName());
assertTrue(target.isGlobal());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testDeleteGroup() throws Exception {
int targetCount=m_dao.findAllTargets().size();
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
AlertTargetEntity target=m_helper.createAlertTarget();
assertEquals(targetCount + 1,m_dao.findAllTargets().size());
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertNotNull(group.getAlertTargets());
assertEquals(0,group.getAlertTargets().size());
group.addAlertTarget(target);
m_dao.merge(group);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertNotNull(group.getAlertTargets());
assertEquals(1,group.getAlertTargets().size());
m_dao.remove(group);
group=m_dao.findGroupById(group.getGroupId());
assertNull(group);
target=m_dao.findTargetById(target.getTargetId());
assertNotNull(target);
assertEquals(targetCount + 1,m_dao.findAllTargets().size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier ExceptionVerifier HybridVerifier
/**
* Tests that when creating a new {@link AlertDefinitionEntity}, if the group
* for its service does not exist, then it will not be created if the service
* is invalid.
*/
@Test(expected=AmbariException.class) public void testDefaultGroupInvalidServiceNoCreation() throws Exception {
List groups=m_dao.findAllGroups();
assertNotNull(groups);
assertEquals(10,groups.size());
for ( AlertGroupEntity group : groups) {
assertFalse(group.isDefault());
}
Cluster cluster=m_helper.buildNewCluster(m_clusters,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
assertEquals(12,m_dao.findAllGroups().size());
AlertDefinitionEntity datanodeProcess=new AlertDefinitionEntity();
datanodeProcess.setClusterId(cluster.getClusterId());
datanodeProcess.setDefinitionName("datanode_process");
datanodeProcess.setServiceName("INVALID");
datanodeProcess.setComponentName("DATANODE");
datanodeProcess.setHash(UUID.randomUUID().toString());
datanodeProcess.setScheduleInterval(60);
datanodeProcess.setScope(Scope.SERVICE);
datanodeProcess.setSource("{\"type\" : \"SCRIPT\"}");
datanodeProcess.setSourceType(SourceType.SCRIPT);
try {
m_definitionDao.create(datanodeProcess);
}
finally {
assertEquals(12,m_dao.findAllGroups().size());
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testCreateTarget() throws Exception {
int targetCount=m_dao.findAllTargets().size();
AlertTargetEntity target=m_helper.createAlertTarget();
Set targets=new HashSet();
targets.add(target);
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),targets);
AlertTargetEntity actual=m_dao.findTargetById(target.getTargetId());
assertNotNull(actual);
assertEquals(target.getTargetName(),actual.getTargetName());
assertEquals(target.getDescription(),actual.getDescription());
assertEquals(target.getNotificationType(),actual.getNotificationType());
assertEquals(target.getProperties(),actual.getProperties());
assertEquals(false,actual.isGlobal());
assertNotNull(actual.getAlertGroups());
Iterator iterator=actual.getAlertGroups().iterator();
AlertGroupEntity actualGroup=iterator.next();
assertEquals(group,actualGroup);
assertEquals(targetCount + 1,m_dao.findAllTargets().size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testGroupDefinitions() throws Exception {
List definitions=createDefinitions();
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
for ( AlertDefinitionEntity definition : definitions) {
group.addAlertDefinition(definition);
}
m_dao.merge(group);
group=m_dao.findGroupByName(group.getGroupName());
assertEquals(definitions.size(),group.getAlertDefinitions().size());
for ( AlertDefinitionEntity definition : definitions) {
assertTrue(group.getAlertDefinitions().contains(definition));
}
m_definitionDao.refresh(definitions.get(0));
m_definitionDao.remove(definitions.get(0));
definitions.remove(0);
group=m_dao.findGroupByName(group.getGroupName());
assertEquals(definitions.size(),group.getAlertDefinitions().size());
for ( AlertDefinitionEntity definition : definitions) {
assertTrue(group.getAlertDefinitions().contains(definition));
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests finding groups by a definition ID that they are associatd with in
* order to get any targets associated with that group. This exercises the
* bi-directional
* @throws Exception
*/
@Test public void testFindTargetsViaGroupsByDefinition() throws Exception {
List definitions=createDefinitions();
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),null);
group=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
AlertDefinitionEntity definition=definitions.get(0);
group.addAlertDefinition(definition);
m_dao.merge(group);
List targets=m_dao.findAllTargets();
AlertTargetEntity target=targets.get(0);
Set setTargets=Collections.singleton(target);
group.setAlertTargets(setTargets);
m_dao.merge(group);
List groups=m_dao.findGroupsByDefinition(definition);
assertEquals(2,groups.size());
group=groups.get(groups.indexOf(group));
assertEquals(1,group.getAlertTargets().size());
assertEquals(target.getTargetId(),group.getAlertTargets().iterator().next().getTargetId());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testCreateGroup() throws Exception {
AlertTargetEntity target=m_helper.createAlertTarget();
Set targets=new HashSet();
targets.add(target);
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),targets);
AlertGroupEntity actual=m_dao.findGroupById(group.getGroupId());
assertNotNull(group);
assertEquals(group.getGroupName(),actual.getGroupName());
assertEquals(group.isDefault(),actual.isDefault());
assertEquals(group.getAlertTargets(),actual.getAlertTargets());
assertEquals(group.getAlertDefinitions(),actual.getAlertDefinitions());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindGroupByName() throws Exception {
List groups=m_dao.findAllGroups();
assertNotNull(groups);
AlertGroupEntity group=groups.get(3);
AlertGroupEntity actual=m_dao.findGroupByName(group.getClusterId(),group.getGroupName());
assertEquals(group,actual);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAllGroups() throws Exception {
List groups=m_dao.findAllGroups();
assertNotNull(groups);
assertEquals(10,groups.size());
}
Class: org.apache.ambari.server.orm.dao.AlertsDAOTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test looking up current by a host name.
*/
@Test public void testFindCurrentByHost() throws Exception {
AlertDefinitionEntity hostDef=new AlertDefinitionEntity();
hostDef.setDefinitionName("Host Alert Definition ");
hostDef.setServiceName("YARN");
hostDef.setComponentName(null);
hostDef.setClusterId(m_cluster.getClusterId());
hostDef.setHash(UUID.randomUUID().toString());
hostDef.setScheduleInterval(Integer.valueOf(60));
hostDef.setScope(Scope.HOST);
hostDef.setSource("{\"type\" : \"SCRIPT\"}");
hostDef.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(hostDef);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(hostDef.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(hostDef);
history.setAlertLabel(hostDef.getDefinitionName());
history.setAlertText(hostDef.getDefinitionName());
history.setAlertTimestamp(Long.valueOf(1L));
history.setHostName(HOSTNAME);
history.setAlertState(AlertState.OK);
AlertCurrentEntity current=new AlertCurrentEntity();
current.setOriginalTimestamp(1L);
current.setLatestTimestamp(2L);
current.setAlertHistory(history);
m_dao.create(current);
Predicate hostPredicate=null;
hostPredicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_HOST).equals(HOSTNAME).toPredicate();
AlertCurrentRequest request=new AlertCurrentRequest();
request.Predicate=hostPredicate;
List currentAlerts=m_dao.findAll(request);
assertNotNull(currentAlerts);
assertEquals(1,currentAlerts.size());
hostPredicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_HOST).equals("invalid.apache.org").toPredicate();
request=new AlertCurrentRequest();
request.Predicate=hostPredicate;
currentAlerts=m_dao.findAll(request);
assertNotNull(currentAlerts);
assertEquals(0,currentAlerts.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCurrenyByHost() throws Exception {
List currentAlerts=m_dao.findCurrent();
assertNotNull(currentAlerts);
assertEquals(5,currentAlerts.size());
m_dao.removeCurrentByHost("h2");
currentAlerts=m_dao.findCurrent();
assertEquals(5,currentAlerts.size());
m_dao.removeCurrentByHost("h1");
currentAlerts=m_dao.findCurrent();
assertEquals(0,currentAlerts.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAll(){
List alerts=m_dao.findAll(m_cluster.getClusterId());
assertNotNull(alerts);
assertEquals(50,alerts.size());
}
InternalCallVerifier NullVerifier
@Test public void testFindCurrentByHostAndName() throws Exception {
AlertCurrentEntity entity=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h2","Alert Definition 1");
assertNull(entity);
entity=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h1","Alert Definition 1");
assertNotNull(entity);
assertNotNull(entity.getAlertHistory());
assertNotNull(entity.getAlertHistory().getAlertDefinition());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that the Ambari {@link Predicate} can be converted and submitted to
* JPA correctly to return a restricted result set.
* @throws Exception
*/
@Test public void testAlertHistoryPredicate() throws Exception {
m_helper.installHdfsService(m_cluster,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
m_alertHelper.populateData(m_cluster);
Predicate clusterPredicate=null;
Predicate hdfsPredicate=null;
Predicate yarnPredicate=null;
Predicate clusterAndHdfsPredicate=null;
Predicate clusterAndHdfsAndCriticalPredicate=null;
Predicate hdfsAndCriticalOrWarningPredicate=null;
Predicate alertNamePredicate=null;
Predicate historyIdPredicate=null;
clusterPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_CLUSTER_NAME).equals("c1").toPredicate();
AlertHistoryRequest request=new AlertHistoryRequest();
request.Predicate=clusterPredicate;
List histories=m_dao.findAll(request);
assertEquals(3,histories.size());
hdfsPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME).equals("HDFS").toPredicate();
yarnPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME).equals("YARN").toPredicate();
clusterAndHdfsPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_CLUSTER_NAME).equals("c1").and().property(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME).equals("HDFS").toPredicate();
clusterAndHdfsPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_CLUSTER_NAME).equals("c1").and().property(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME).equals("HDFS").toPredicate();
clusterAndHdfsAndCriticalPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_CLUSTER_NAME).equals("c1").and().property(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME).equals("HDFS").and().property(AlertHistoryResourceProvider.ALERT_HISTORY_STATE).equals(AlertState.CRITICAL.name()).toPredicate();
hdfsAndCriticalOrWarningPredicate=new PredicateBuilder().begin().property(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME).equals("HDFS").and().property(AlertHistoryResourceProvider.ALERT_HISTORY_STATE).equals(AlertState.CRITICAL.name()).end().or().property(AlertHistoryResourceProvider.ALERT_HISTORY_STATE).equals(AlertState.WARNING.name()).toPredicate();
alertNamePredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_DEFINITION_NAME).equals("NAMENODE").toPredicate();
request.Predicate=hdfsPredicate;
histories=m_dao.findAll(request);
assertEquals(2,histories.size());
request.Predicate=yarnPredicate;
histories=m_dao.findAll(request);
assertEquals(1,histories.size());
request.Predicate=clusterAndHdfsPredicate;
histories=m_dao.findAll(request);
assertEquals(2,histories.size());
request.Predicate=clusterAndHdfsAndCriticalPredicate;
histories=m_dao.findAll(request);
assertEquals(0,histories.size());
request.Predicate=hdfsAndCriticalOrWarningPredicate;
histories=m_dao.findAll(request);
assertEquals(1,histories.size());
request.Predicate=alertNamePredicate;
histories=m_dao.findAll(request);
assertEquals(1,histories.size());
historyIdPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_ID).equals(histories.get(0).getAlertId()).toPredicate();
request.Predicate=historyIdPredicate;
histories=m_dao.findAll(request);
assertEquals(1,histories.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindCurrentByService(){
List currentAlerts=m_dao.findCurrent();
int currentAlertExpectedCount=currentAlerts.size();
assertEquals(5,currentAlertExpectedCount);
AlertCurrentEntity current=currentAlerts.get(0);
AlertHistoryEntity history=current.getAlertHistory();
assertNotNull(history);
currentAlerts=m_dao.findCurrentByService(m_cluster.getClusterId(),history.getServiceName());
assertNotNull(currentAlerts);
assertEquals(currentAlertExpectedCount,currentAlerts.size());
currentAlerts=m_dao.findCurrentByService(m_cluster.getClusterId(),"foo");
assertNotNull(currentAlerts);
assertEquals(0,currentAlerts.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindByState(){
List allStates=new ArrayList();
allStates.add(AlertState.OK);
allStates.add(AlertState.WARNING);
allStates.add(AlertState.CRITICAL);
List history=m_dao.findAll(m_cluster.getClusterId(),allStates);
assertNotNull(history);
assertEquals(50,history.size());
history=m_dao.findAll(m_cluster.getClusterId(),Collections.singletonList(AlertState.OK));
assertNotNull(history);
assertEquals(40,history.size());
history=m_dao.findAll(m_cluster.getClusterId(),Collections.singletonList(AlertState.CRITICAL));
assertNotNull(history);
assertEquals(10,history.size());
history=m_dao.findAll(m_cluster.getClusterId(),Collections.singletonList(AlertState.WARNING));
assertNotNull(history);
assertEquals(0,history.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCurrenyByService() throws Exception {
List currentAlerts=m_dao.findCurrent();
assertNotNull(currentAlerts);
assertEquals(5,currentAlerts.size());
m_dao.removeCurrentByService(m_cluster.getClusterId(),"HDFS");
currentAlerts=m_dao.findCurrent();
assertEquals(5,currentAlerts.size());
m_dao.removeCurrentByService(m_cluster.getClusterId(),"YARN");
currentAlerts=m_dao.findCurrent();
assertEquals(0,currentAlerts.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindByDate(){
calendar.clear();
calendar.set(2014,Calendar.JANUARY,1);
List history=m_dao.findAll(m_cluster.getClusterId(),calendar.getTime(),null);
assertNotNull(history);
assertEquals(50,history.size());
history=m_dao.findAll(m_cluster.getClusterId(),null,calendar.getTime());
assertNotNull(history);
assertEquals(1,history.size());
calendar.set(2014,Calendar.JANUARY,5);
Date startDate=calendar.getTime();
calendar.set(2014,Calendar.JANUARY,10);
Date endDate=calendar.getTime();
history=m_dao.findAll(m_cluster.getClusterId(),startDate,endDate);
assertNotNull(history);
assertEquals(6,history.size());
calendar.set(2014,Calendar.MARCH,5);
history=m_dao.findAll(m_cluster.getClusterId(),calendar.getTime(),null);
assertNotNull(history);
assertEquals(0,history.size());
history=m_dao.findAll(m_cluster.getClusterId(),endDate,startDate);
assertNotNull(history);
assertEquals(0,history.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindAggregates() throws Exception {
AlertDefinitionEntity definition=new AlertDefinitionEntity();
definition.setDefinitionName("many_per_cluster");
definition.setServiceName("YARN");
definition.setComponentName(null);
definition.setClusterId(m_cluster.getClusterId());
definition.setHash(UUID.randomUUID().toString());
definition.setScheduleInterval(Integer.valueOf(60));
definition.setScope(Scope.SERVICE);
definition.setSource("{\"type\" : \"SCRIPT\"}");
definition.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(definition);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setAlertDefinition(definition);
history.setAlertInstance(null);
history.setAlertLabel("");
history.setAlertState(AlertState.OK);
history.setAlertText("");
history.setAlertTimestamp(Long.valueOf(1L));
history.setClusterId(m_cluster.getClusterId());
history.setComponentName("");
history.setHostName("h1");
history.setServiceName("ServiceName");
AlertCurrentEntity current=new AlertCurrentEntity();
current.setAlertHistory(history);
current.setLatestTimestamp(Long.valueOf(1L));
current.setOriginalTimestamp(Long.valueOf(1L));
m_dao.merge(current);
history=new AlertHistoryEntity();
history.setAlertDefinition(definition);
history.setAlertInstance(null);
history.setAlertLabel("");
history.setAlertState(AlertState.OK);
history.setAlertText("");
history.setAlertTimestamp(Long.valueOf(1L));
history.setClusterId(m_cluster.getClusterId());
history.setComponentName("");
history.setHostName("h2");
history.setServiceName("ServiceName");
current=new AlertCurrentEntity();
current.setAlertHistory(history);
current.setLatestTimestamp(Long.valueOf(1L));
current.setOriginalTimestamp(Long.valueOf(1L));
m_dao.merge(current);
AlertSummaryDTO summary=m_dao.findAggregateCounts(m_cluster.getClusterId(),"many_per_cluster");
assertEquals(2,summary.getOkCount());
assertEquals(0,summary.getWarningCount());
assertEquals(0,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
AlertCurrentEntity c=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h2","many_per_cluster");
AlertHistoryEntity h=c.getAlertHistory();
h.setAlertState(AlertState.CRITICAL);
m_dao.merge(h);
summary=m_dao.findAggregateCounts(m_cluster.getClusterId(),"many_per_cluster");
assertEquals(1,summary.getOkCount());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
summary=m_dao.findAggregateCounts(m_cluster.getClusterId(),"foo");
assertEquals(0,summary.getOkCount());
assertEquals(0,summary.getWarningCount());
assertEquals(0,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
}
InternalCallVerifier BooleanVerifier
/**
* Tests that the Ambari sort is correctly applied to JPA quuery.
* @throws Exception
*/
@Test public void testAlertCurrentSorting() throws Exception {
AlertCurrentRequest request=new AlertCurrentRequest();
Predicate clusterPredicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_CLUSTER_NAME).equals(m_cluster.getClusterName()).toPredicate();
request.Predicate=clusterPredicate;
SortRequestProperty sortRequestProperty=new SortRequestProperty(AlertResourceProvider.ALERT_ID,Order.ASC);
request.Sort=new SortRequestImpl(Collections.singletonList(sortRequestProperty));
List currentAlerts=m_dao.findAll(request);
assertTrue(currentAlerts.size() >= 5);
long lastId=Long.MIN_VALUE;
for ( AlertCurrentEntity alert : currentAlerts) {
assertTrue(lastId < alert.getAlertId());
lastId=alert.getAlertId();
}
sortRequestProperty=new SortRequestProperty(AlertResourceProvider.ALERT_ID,Order.DESC);
request.Sort=new SortRequestImpl(Collections.singletonList(sortRequestProperty));
currentAlerts=m_dao.findAll(request);
assertTrue(currentAlerts.size() >= 5);
lastId=Long.MAX_VALUE;
for ( AlertCurrentEntity alert : currentAlerts) {
assertTrue(lastId > alert.getAlertId());
lastId=alert.getAlertId();
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that JPA does the sorting work for us.
* @throws Exception
*/
@Test public void testAlertHistorySorting() throws Exception {
m_helper.installHdfsService(m_cluster,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
m_alertHelper.populateData(m_cluster);
List sortProperties=new ArrayList();
SortRequest sortRequest=new SortRequestImpl(sortProperties);
AlertHistoryRequest request=new AlertHistoryRequest();
request.Sort=sortRequest;
Predicate clusterPredicate=new PredicateBuilder().property(AlertHistoryResourceProvider.ALERT_HISTORY_CLUSTER_NAME).equals("c1").toPredicate();
request.Predicate=clusterPredicate;
sortProperties.add(new SortRequestProperty(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME,Order.ASC));
List histories=m_dao.findAll(request);
assertEquals(3,histories.size());
String lastServiceName=null;
for ( AlertHistoryEntity history : histories) {
if (null == lastServiceName) {
lastServiceName=history.getServiceName();
continue;
}
String currentServiceName=history.getServiceName();
assertTrue(lastServiceName.compareTo(currentServiceName) <= 0);
lastServiceName=currentServiceName;
}
sortProperties.clear();
sortProperties.add(new SortRequestProperty(AlertHistoryResourceProvider.ALERT_HISTORY_SERVICE_NAME,Order.DESC));
histories=m_dao.findAll(request);
assertEquals(3,histories.size());
lastServiceName=null;
for ( AlertHistoryEntity history : histories) {
if (null == lastServiceName) {
lastServiceName=history.getServiceName();
continue;
}
String currentServiceName=history.getServiceName();
assertTrue(lastServiceName.compareTo(currentServiceName) >= 0);
lastServiceName=currentServiceName;
}
}
InternalCallVerifier EqualityVerifier
/**
* Test looking up current alerts by definition ID.
*/
@Test public void testFindCurrentByDefinitionId() throws Exception {
AlertDefinitionEntity definition=new AlertDefinitionEntity();
definition.setDefinitionName("Foo Definition");
definition.setServiceName("YARN");
definition.setComponentName("NODEMANAGER");
definition.setClusterId(m_cluster.getClusterId());
definition.setHash(UUID.randomUUID().toString());
definition.setScheduleInterval(Integer.valueOf(60));
definition.setScope(Scope.HOST);
definition.setSource("{\"type\" : \"SCRIPT\"}");
definition.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(definition);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(definition);
history.setAlertLabel(definition.getDefinitionName());
history.setAlertText(definition.getDefinitionName());
history.setAlertTimestamp(Long.valueOf(1L));
history.setHostName("h1");
history.setAlertState(AlertState.OK);
AlertCurrentEntity current=new AlertCurrentEntity();
current.setOriginalTimestamp(1L);
current.setLatestTimestamp(2L);
current.setAlertHistory(history);
m_dao.create(current);
List currentAlerts=m_dao.findCurrentByDefinitionId(definition.getDefinitionId());
assertEquals(1,currentAlerts.size());
AlertHistoryEntity history2=new AlertHistoryEntity();
history2.setServiceName(definition.getServiceName());
history2.setClusterId(m_cluster.getClusterId());
history2.setAlertDefinition(definition);
history2.setAlertLabel(definition.getDefinitionName());
history2.setAlertText(definition.getDefinitionName());
history2.setAlertTimestamp(Long.valueOf(1L));
history2.setHostName("h2");
history2.setAlertState(AlertState.OK);
AlertCurrentEntity current2=new AlertCurrentEntity();
current2.setOriginalTimestamp(1L);
current2.setLatestTimestamp(2L);
current2.setAlertHistory(history2);
m_dao.create(current2);
currentAlerts=m_dao.findCurrentByDefinitionId(definition.getDefinitionId());
assertEquals(2,currentAlerts.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testFindAllCurrent(){
List currentAlerts=m_dao.findCurrent();
assertNotNull(currentAlerts);
assertEquals(5,currentAlerts.size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that JPA does the pagination work for us.
* @throws Exception
*/
@Test public void testAlertHistoryPagination() throws Exception {
m_helper.installHdfsService(m_cluster,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
m_alertHelper.populateData(m_cluster);
AlertHistoryRequest request=new AlertHistoryRequest();
request.Pagination=null;
List histories=m_dao.findAll(request);
assertEquals(3,histories.size());
request.Pagination=new PageRequestImpl(StartingPoint.Beginning,2,0,null,null);
histories=m_dao.findAll(request);
assertEquals(2,histories.size());
request.Pagination=new PageRequestImpl(StartingPoint.Beginning,1,2,null,null);
histories=m_dao.findAll(request);
assertEquals(1,histories.size());
request.Pagination=new PageRequestImpl(StartingPoint.Beginning,1,3,null,null);
histories=m_dao.findAll(request);
assertEquals(0,histories.size());
}
InternalCallVerifier EqualityVerifier
/**
*/
@Test public void testFindCurrentHostSummary() throws Exception {
AlertHostSummaryDTO summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(0,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(1,summary.getOkCount());
AlertHistoryEntity history1=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(1).getAlertHistory();
history1.setAlertState(AlertState.WARNING);
m_dao.merge(history1);
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(1,summary.getWarningCount());
assertEquals(0,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(0,summary.getOkCount());
history1.setAlertState(AlertState.CRITICAL);
m_dao.merge(history1);
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(0,summary.getOkCount());
AlertHistoryEntity history2=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(2).getAlertHistory();
history2.setHostName(history2.getHostName() + "-foo");
m_dao.merge(history2);
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(1,summary.getOkCount());
AlertHistoryEntity history3=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(3).getAlertHistory();
history3.setHostName(history3.getHostName() + "-bar");
m_dao.merge(history3);
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(2,summary.getOkCount());
AlertHistoryEntity history4=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(4).getAlertHistory();
history4.setHostName(history4.getHostName() + "-baz");
history4.setAlertState(AlertState.UNKNOWN);
m_dao.merge(history3);
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(1,summary.getUnknownCount());
assertEquals(2,summary.getOkCount());
AlertCurrentEntity current4=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(4);
current4.setMaintenanceState(MaintenanceState.ON);
m_dao.merge(current4);
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(3,summary.getOkCount());
List currents=m_dao.findCurrentByCluster(m_cluster.getClusterId());
for ( AlertCurrentEntity current : currents) {
current.setMaintenanceState(MaintenanceState.ON);
m_dao.merge(current);
}
summary=m_dao.findCurrentHostCounts(m_cluster.getClusterId());
assertEquals(0,summary.getWarningCount());
assertEquals(0,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(4,summary.getOkCount());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that the Ambari {@link Predicate} can be converted and submitted to
* JPA correctly to return a restricted result set.
* @throws Exception
*/
@Test public void testAlertCurrentPredicate() throws Exception {
AlertDefinitionEntity definition=m_definitionDao.findByName(m_cluster.getClusterId(),"Alert Definition 0");
assertNotNull(definition);
Predicate definitionIdPredicate=null;
Predicate hdfsPredicate=null;
Predicate yarnPredicate=null;
definitionIdPredicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_DEFINITION_ID).equals(definition.getDefinitionId()).toPredicate();
AlertCurrentRequest request=new AlertCurrentRequest();
request.Predicate=definitionIdPredicate;
List currentAlerts=m_dao.findAll(request);
assertEquals(1,currentAlerts.size());
hdfsPredicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_SERVICE).equals("HDFS").toPredicate();
yarnPredicate=new PredicateBuilder().property(AlertResourceProvider.ALERT_SERVICE).equals("YARN").toPredicate();
request.Predicate=yarnPredicate;
currentAlerts=m_dao.findAll(request);
assertEquals(5,currentAlerts.size());
request.Predicate=hdfsPredicate;
currentAlerts=m_dao.findAll(request);
assertEquals(0,currentAlerts.size());
}
InternalCallVerifier EqualityVerifier
/**
*/
@Test public void testFindCurrentSummary() throws Exception {
AlertSummaryDTO summary=m_dao.findCurrentCounts(m_cluster.getClusterId(),null,null);
assertEquals(5,summary.getOkCount());
AlertHistoryEntity h1=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(2).getAlertHistory();
AlertHistoryEntity h2=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(3).getAlertHistory();
AlertHistoryEntity h3=m_dao.findCurrentByCluster(m_cluster.getClusterId()).get(4).getAlertHistory();
h1.setAlertState(AlertState.WARNING);
m_dao.merge(h1);
h2.setAlertState(AlertState.CRITICAL);
m_dao.merge(h2);
h3.setAlertState(AlertState.UNKNOWN);
m_dao.merge(h3);
int ok=0;
int warn=0;
int crit=0;
int unk=0;
int maintenance=0;
List currents=m_dao.findCurrentByCluster(m_cluster.getClusterId());
for ( AlertCurrentEntity current : currents) {
if (current.getMaintenanceState() != MaintenanceState.OFF) {
maintenance++;
continue;
}
switch (current.getAlertHistory().getAlertState()) {
case CRITICAL:
crit++;
break;
case OK:
ok++;
break;
case UNKNOWN:
unk++;
break;
default :
warn++;
break;
}
}
summary=m_dao.findCurrentCounts(m_cluster.getClusterId(),null,null);
assertEquals(ok,summary.getOkCount());
assertEquals(warn,summary.getWarningCount());
assertEquals(crit,summary.getCriticalCount());
assertEquals(unk,summary.getUnknownCount());
assertEquals(maintenance,summary.getMaintenanceCount());
assertEquals(2,summary.getOkCount());
assertEquals(1,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(1,summary.getUnknownCount());
assertEquals(0,summary.getMaintenanceCount());
summary=m_dao.findCurrentCounts(m_cluster.getClusterId(),"YARN",null);
assertEquals(2,summary.getOkCount());
assertEquals(1,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(1,summary.getUnknownCount());
summary=m_dao.findCurrentCounts(m_cluster.getClusterId(),null,"h1");
assertEquals(2,summary.getOkCount());
assertEquals(1,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(1,summary.getUnknownCount());
assertEquals(0,summary.getMaintenanceCount());
summary=m_dao.findCurrentCounts(m_cluster.getClusterId(),"foo",null);
assertEquals(0,summary.getOkCount());
assertEquals(0,summary.getWarningCount());
assertEquals(0,summary.getCriticalCount());
assertEquals(0,summary.getUnknownCount());
assertEquals(0,summary.getMaintenanceCount());
for (AlertCurrentEntity current : currents) {
if (current.getAlertHistory().getAlertState() == AlertState.WARNING) {
current.setMaintenanceState(MaintenanceState.ON);
m_dao.merge(current);
}
}
summary=m_dao.findCurrentCounts(m_cluster.getClusterId(),null,null);
assertEquals(2,summary.getOkCount());
assertEquals(0,summary.getWarningCount());
assertEquals(1,summary.getCriticalCount());
assertEquals(1,summary.getUnknownCount());
assertEquals(1,summary.getMaintenanceCount());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCurrenyByComponentHost() throws Exception {
List currentAlerts=m_dao.findCurrent();
assertNotNull(currentAlerts);
assertEquals(5,currentAlerts.size());
AlertCurrentEntity entity=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h1","Alert Definition 1");
assertNotNull(entity);
m_dao.removeCurrentByServiceComponentHost(m_cluster.getClusterId(),entity.getAlertHistory().getServiceName(),entity.getAlertHistory().getComponentName(),entity.getAlertHistory().getHostName());
currentAlerts=m_dao.findCurrent();
assertEquals(4,currentAlerts.size());
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that maintenance mode is set correctly on notices.
* @throws Exception
*/
@Test public void testMaintenanceMode() throws Exception {
m_helper.installHdfsService(m_cluster,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
List currents=m_dao.findCurrent();
for ( AlertCurrentEntity current : currents) {
m_dao.remove(current);
}
AlertDefinitionEntity namenode=new AlertDefinitionEntity();
namenode.setDefinitionName("NAMENODE");
namenode.setServiceName("HDFS");
namenode.setComponentName("NAMENODE");
namenode.setClusterId(m_cluster.getClusterId());
namenode.setHash(UUID.randomUUID().toString());
namenode.setScheduleInterval(Integer.valueOf(60));
namenode.setScope(Scope.ANY);
namenode.setSource("{\"type\" : \"SCRIPT\"}");
namenode.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(namenode);
AlertDefinitionEntity datanode=new AlertDefinitionEntity();
datanode.setDefinitionName("DATANODE");
datanode.setServiceName("HDFS");
datanode.setComponentName("DATANODE");
datanode.setClusterId(m_cluster.getClusterId());
datanode.setHash(UUID.randomUUID().toString());
datanode.setScheduleInterval(Integer.valueOf(60));
datanode.setScope(Scope.HOST);
datanode.setSource("{\"type\" : \"SCRIPT\"}");
datanode.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(datanode);
AlertDefinitionEntity aggregate=new AlertDefinitionEntity();
aggregate.setDefinitionName("DATANODE_UP");
aggregate.setServiceName("HDFS");
aggregate.setComponentName(null);
aggregate.setClusterId(m_cluster.getClusterId());
aggregate.setHash(UUID.randomUUID().toString());
aggregate.setScheduleInterval(Integer.valueOf(60));
aggregate.setScope(Scope.SERVICE);
aggregate.setSource("{\"type\" : \"SCRIPT\"}");
aggregate.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(aggregate);
AlertHistoryEntity nnHistory=new AlertHistoryEntity();
nnHistory.setAlertState(AlertState.OK);
nnHistory.setServiceName(namenode.getServiceName());
nnHistory.setComponentName(namenode.getComponentName());
nnHistory.setClusterId(m_cluster.getClusterId());
nnHistory.setAlertDefinition(namenode);
nnHistory.setAlertLabel(namenode.getDefinitionName());
nnHistory.setAlertText(namenode.getDefinitionName());
nnHistory.setAlertTimestamp(calendar.getTimeInMillis());
nnHistory.setHostName(HOSTNAME);
m_dao.create(nnHistory);
AlertCurrentEntity nnCurrent=new AlertCurrentEntity();
nnCurrent.setAlertHistory(nnHistory);
nnCurrent.setLatestText(nnHistory.getAlertText());
nnCurrent.setMaintenanceState(MaintenanceState.OFF);
nnCurrent.setOriginalTimestamp(System.currentTimeMillis());
nnCurrent.setLatestTimestamp(System.currentTimeMillis());
m_dao.create(nnCurrent);
AlertHistoryEntity dnHistory=new AlertHistoryEntity();
dnHistory.setAlertState(AlertState.WARNING);
dnHistory.setServiceName(datanode.getServiceName());
dnHistory.setComponentName(datanode.getComponentName());
dnHistory.setClusterId(m_cluster.getClusterId());
dnHistory.setAlertDefinition(datanode);
dnHistory.setAlertLabel(datanode.getDefinitionName());
dnHistory.setAlertText(datanode.getDefinitionName());
dnHistory.setAlertTimestamp(calendar.getTimeInMillis());
dnHistory.setHostName(HOSTNAME);
m_dao.create(dnHistory);
AlertCurrentEntity dnCurrent=new AlertCurrentEntity();
dnCurrent.setAlertHistory(dnHistory);
dnCurrent.setLatestText(dnHistory.getAlertText());
dnCurrent.setMaintenanceState(MaintenanceState.OFF);
dnCurrent.setOriginalTimestamp(System.currentTimeMillis());
dnCurrent.setLatestTimestamp(System.currentTimeMillis());
m_dao.create(dnCurrent);
AlertHistoryEntity aggregateHistory=new AlertHistoryEntity();
aggregateHistory.setAlertState(AlertState.CRITICAL);
aggregateHistory.setServiceName(aggregate.getServiceName());
aggregateHistory.setComponentName(aggregate.getComponentName());
aggregateHistory.setClusterId(m_cluster.getClusterId());
aggregateHistory.setAlertDefinition(aggregate);
aggregateHistory.setAlertLabel(aggregate.getDefinitionName());
aggregateHistory.setAlertText(aggregate.getDefinitionName());
aggregateHistory.setAlertTimestamp(calendar.getTimeInMillis());
m_dao.create(aggregateHistory);
AlertCurrentEntity aggregateCurrent=new AlertCurrentEntity();
aggregateCurrent.setAlertHistory(aggregateHistory);
aggregateCurrent.setLatestText(aggregateHistory.getAlertText());
aggregateCurrent.setMaintenanceState(MaintenanceState.OFF);
aggregateCurrent.setOriginalTimestamp(System.currentTimeMillis());
aggregateCurrent.setLatestTimestamp(System.currentTimeMillis());
m_dao.create(aggregateCurrent);
currents=m_dao.findCurrent();
assertEquals(3,currents.size());
for ( AlertCurrentEntity current : currents) {
assertEquals(MaintenanceState.OFF,current.getMaintenanceState());
}
Service hdfs=m_clusters.getClusterById(m_cluster.getClusterId()).getService("HDFS");
hdfs.setMaintenanceState(MaintenanceState.ON);
currents=m_dao.findCurrent();
assertEquals(3,currents.size());
for ( AlertCurrentEntity current : currents) {
assertEquals(MaintenanceState.ON,current.getMaintenanceState());
}
hdfs.setMaintenanceState(MaintenanceState.OFF);
currents=m_dao.findCurrent();
assertEquals(3,currents.size());
for ( AlertCurrentEntity current : currents) {
assertEquals(MaintenanceState.OFF,current.getMaintenanceState());
}
Host host=m_clusters.getHost(HOSTNAME);
host.setMaintenanceState(m_cluster.getClusterId(),MaintenanceState.ON);
currents=m_dao.findCurrent();
assertEquals(3,currents.size());
for ( AlertCurrentEntity current : currents) {
if (current.getAlertHistory().getComponentName() != null) {
assertEquals(MaintenanceState.ON,current.getMaintenanceState());
}
else {
assertEquals(MaintenanceState.OFF,current.getMaintenanceState());
}
}
host.setMaintenanceState(m_cluster.getClusterId(),MaintenanceState.OFF);
currents=m_dao.findCurrent();
assertEquals(3,currents.size());
for ( AlertCurrentEntity current : currents) {
assertEquals(MaintenanceState.OFF,current.getMaintenanceState());
}
ServiceComponentHost nnComponent=null;
List schs=m_cluster.getServiceComponentHosts(HOSTNAME);
for ( ServiceComponentHost sch : schs) {
if ("NAMENODE".equals(sch.getServiceComponentName())) {
sch.setMaintenanceState(MaintenanceState.ON);
nnComponent=sch;
}
}
assertNotNull(nnComponent);
currents=m_dao.findCurrent();
assertEquals(3,currents.size());
for ( AlertCurrentEntity current : currents) {
if ("NAMENODE".equals(current.getAlertHistory().getComponentName())) {
assertEquals(MaintenanceState.ON,current.getMaintenanceState());
}
else {
assertEquals(MaintenanceState.OFF,current.getMaintenanceState());
}
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
*/
@Test public void testFindCurrentPerHostSummary() throws Exception {
m_helper.addHost(m_clusters,m_cluster,"h2");
List definitions=m_definitionDao.findAll();
AlertDefinitionEntity definition=definitions.get(0);
AlertHistoryEntity h2CriticalHistory=new AlertHistoryEntity();
h2CriticalHistory.setServiceName(definition.getServiceName());
h2CriticalHistory.setClusterId(m_cluster.getClusterId());
h2CriticalHistory.setAlertDefinition(definition);
h2CriticalHistory.setAlertLabel(definition.getDefinitionName() + " h2");
h2CriticalHistory.setAlertText(definition.getDefinitionName() + " h2");
h2CriticalHistory.setAlertTimestamp(calendar.getTimeInMillis());
h2CriticalHistory.setComponentName(definition.getComponentName());
h2CriticalHistory.setHostName("h2");
h2CriticalHistory.setAlertState(AlertState.CRITICAL);
m_dao.create(h2CriticalHistory);
AlertCurrentEntity h2CriticalCurrent=new AlertCurrentEntity();
h2CriticalCurrent.setAlertHistory(h2CriticalHistory);
h2CriticalCurrent.setLatestTimestamp(new Date().getTime());
h2CriticalCurrent.setOriginalTimestamp(new Date().getTime() - 10800000);
h2CriticalCurrent.setMaintenanceState(MaintenanceState.OFF);
m_dao.create(h2CriticalCurrent);
try {
long clusterId=m_cluster.getClusterId();
AlertSummaryDTO summary=m_dao.findCurrentCounts(clusterId,null,null);
assertEquals(5,summary.getOkCount());
AlertHistoryEntity h1=m_dao.findCurrentByCluster(clusterId).get(2).getAlertHistory();
AlertHistoryEntity h2=m_dao.findCurrentByCluster(clusterId).get(3).getAlertHistory();
AlertHistoryEntity h3=m_dao.findCurrentByCluster(clusterId).get(4).getAlertHistory();
h1.setAlertState(AlertState.WARNING);
m_dao.merge(h1);
h2.setAlertState(AlertState.CRITICAL);
m_dao.merge(h2);
h3.setAlertState(AlertState.UNKNOWN);
m_dao.merge(h3);
Map perHostSummary=m_dao.findCurrentPerHostCounts(clusterId);
AlertSummaryDTO h1summary=m_dao.findCurrentCounts(clusterId,null,"h1");
assertEquals(2,h1summary.getOkCount());
assertEquals(1,h1summary.getWarningCount());
assertEquals(1,h1summary.getCriticalCount());
assertEquals(1,h1summary.getUnknownCount());
assertEquals(0,h1summary.getMaintenanceCount());
AlertSummaryDTO h2summary=m_dao.findCurrentCounts(clusterId,null,"h2");
assertEquals(0,h2summary.getOkCount());
assertEquals(0,h2summary.getWarningCount());
assertEquals(1,h2summary.getCriticalCount());
assertEquals(0,h2summary.getUnknownCount());
assertEquals(0,h2summary.getMaintenanceCount());
AlertSummaryDTO h1PerHostSummary=perHostSummary.get("h1");
assertEquals(h1PerHostSummary.getOkCount(),h1summary.getOkCount());
assertEquals(h1PerHostSummary.getWarningCount(),h1summary.getWarningCount());
assertEquals(h1PerHostSummary.getCriticalCount(),h1summary.getCriticalCount());
assertEquals(h1PerHostSummary.getUnknownCount(),h1summary.getUnknownCount());
assertEquals(h1PerHostSummary.getMaintenanceCount(),h1summary.getMaintenanceCount());
AlertSummaryDTO h2PerHostSummary=perHostSummary.get("h2");
assertEquals(h2PerHostSummary.getOkCount(),h2summary.getOkCount());
assertEquals(h2PerHostSummary.getWarningCount(),h2summary.getWarningCount());
assertEquals(h2PerHostSummary.getCriticalCount(),h2summary.getCriticalCount());
assertEquals(h2PerHostSummary.getUnknownCount(),h2summary.getUnknownCount());
assertEquals(h2PerHostSummary.getMaintenanceCount(),h2summary.getMaintenanceCount());
}
finally {
m_dao.remove(h2CriticalCurrent);
m_dao.remove(h2CriticalHistory);
m_clusters.unmapHostFromCluster("h2",m_cluster.getClusterName());
}
}
InternalCallVerifier EqualityVerifier
/**
* Tests that the {@link AlertCurrentEntity} fields are updated properly when
* a new {@link AlertHistoryEntity} is associated.
* @throws Exception
*/
@Test public void testAlertCurrentUpdatesViaHistory() throws Exception {
AlertDefinitionEntity hostDef=new AlertDefinitionEntity();
hostDef.setDefinitionName("Host Alert Definition ");
hostDef.setServiceName("YARN");
hostDef.setComponentName(null);
hostDef.setClusterId(m_cluster.getClusterId());
hostDef.setHash(UUID.randomUUID().toString());
hostDef.setScheduleInterval(Integer.valueOf(60));
hostDef.setScope(Scope.HOST);
hostDef.setSource("{\"type\" : \"SCRIPT\"}");
hostDef.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(hostDef);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(hostDef.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(hostDef);
history.setAlertLabel(hostDef.getDefinitionName());
history.setAlertText(hostDef.getDefinitionName());
history.setAlertTimestamp(Long.valueOf(1L));
history.setHostName("h2");
history.setAlertState(AlertState.OK);
AlertCurrentEntity current=new AlertCurrentEntity();
current.setOriginalTimestamp(1L);
current.setLatestTimestamp(2L);
current.setAlertHistory(history);
m_dao.create(current);
assertEquals(history.getAlertText(),current.getLatestText());
history.setAlertText("foobar!");
current.setAlertHistory(history);
assertEquals(history.getAlertText(),current.getLatestText());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCurrentDisabled() throws Exception {
List currentAlerts=m_dao.findCurrent();
assertNotNull(currentAlerts);
assertEquals(5,currentAlerts.size());
AlertDefinitionEntity definition=currentAlerts.get(0).getAlertHistory().getAlertDefinition();
definition.setEnabled(false);
m_definitionDao.merge(definition);
m_dao.removeCurrentDisabledAlerts();
currentAlerts=m_dao.findCurrent();
assertEquals(4,currentAlerts.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests https:/
* /bugs.eclipse.org/bugs/show_bug.cgi?id=398067 which causes an inner
* entity to be stale.
*/
@Test public void testJPAInnerEntityStaleness(){
List currents=m_dao.findCurrent();
AlertCurrentEntity current=currents.get(0);
AlertHistoryEntity oldHistory=current.getAlertHistory();
AlertHistoryEntity newHistory=new AlertHistoryEntity();
newHistory.setAlertDefinition(oldHistory.getAlertDefinition());
newHistory.setAlertInstance(oldHistory.getAlertInstance());
newHistory.setAlertLabel(oldHistory.getAlertLabel());
if (oldHistory.getAlertState() == AlertState.OK) {
newHistory.setAlertState(AlertState.CRITICAL);
}
else {
newHistory.setAlertState(AlertState.OK);
}
newHistory.setAlertText("New History");
newHistory.setClusterId(oldHistory.getClusterId());
newHistory.setAlertTimestamp(System.currentTimeMillis());
newHistory.setComponentName(oldHistory.getComponentName());
newHistory.setHostName(oldHistory.getHostName());
newHistory.setServiceName(oldHistory.getServiceName());
m_dao.create(newHistory);
assertTrue(newHistory.getAlertId().longValue() != oldHistory.getAlertId().longValue());
current.setAlertHistory(newHistory);
m_dao.merge(current);
AlertCurrentEntity newCurrent=m_dao.findCurrentByHostAndName(newHistory.getClusterId(),newHistory.getHostName(),newHistory.getAlertDefinition().getDefinitionName());
assertEquals(newHistory.getAlertId(),newCurrent.getAlertHistory().getAlertId());
assertEquals(newHistory.getAlertState(),newCurrent.getAlertHistory().getAlertState());
newCurrent=m_dao.findCurrentById(current.getAlertId());
assertEquals(newHistory.getAlertId(),newCurrent.getAlertHistory().getAlertId());
assertEquals(newHistory.getAlertState(),newCurrent.getAlertHistory().getAlertState());
}
TestInitializer InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Before public void setup() throws Exception {
m_injector=Guice.createInjector(new InMemoryDefaultTestModule());
m_injector.getInstance(GuiceJpaInitializer.class);
m_injector.getInstance(UnitOfWork.class).begin();
m_helper=m_injector.getInstance(OrmTestHelper.class);
m_dao=m_injector.getInstance(AlertsDAO.class);
m_definitionDao=m_injector.getInstance(AlertDefinitionDAO.class);
m_serviceFactory=m_injector.getInstance(ServiceFactory.class);
m_componentFactory=m_injector.getInstance(ServiceComponentFactory.class);
m_schFactory=m_injector.getInstance(ServiceComponentHostFactory.class);
m_clusters=m_injector.getInstance(Clusters.class);
m_alertHelper=m_injector.getInstance(AlertDaoHelper.class);
EventBusSynchronizer.synchronizeAmbariEventPublisher(m_injector);
m_cluster=m_clusters.getClusterById(m_helper.createCluster());
m_helper.initializeClusterWithStack(m_cluster);
m_helper.addHost(m_clusters,m_cluster,HOSTNAME);
m_helper.installYarnService(m_cluster,m_serviceFactory,m_componentFactory,m_schFactory,HOSTNAME);
for (int i=0; i < 5; i++) {
AlertDefinitionEntity definition=new AlertDefinitionEntity();
definition.setDefinitionName("Alert Definition " + i);
definition.setServiceName("YARN");
definition.setComponentName("Component " + i);
definition.setClusterId(m_cluster.getClusterId());
definition.setHash(UUID.randomUUID().toString());
definition.setScheduleInterval(Integer.valueOf(60));
definition.setScope(Scope.SERVICE);
definition.setSource("{\"type\" : \"SCRIPT\"}");
definition.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(definition);
}
List definitions=m_definitionDao.findAll();
assertNotNull(definitions);
assertEquals(5,definitions.size());
calendar.clear();
calendar.set(2014,Calendar.JANUARY,1);
for ( AlertDefinitionEntity definition : definitions) {
for (int i=0; i < 10; i++) {
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(definition);
history.setAlertLabel(definition.getDefinitionName() + " " + i);
history.setAlertText(definition.getDefinitionName() + " " + i);
history.setAlertTimestamp(calendar.getTimeInMillis());
history.setComponentName(definition.getComponentName());
history.setHostName("h1");
history.setAlertState(AlertState.OK);
if (i == 0 || i == 5) {
history.setAlertState(AlertState.CRITICAL);
}
calendar.add(Calendar.DATE,1);
m_dao.create(history);
}
}
for ( AlertDefinitionEntity definition : definitions) {
List alerts=m_dao.findAll();
AlertHistoryEntity history=null;
for ( AlertHistoryEntity alert : alerts) {
if (definition.equals(alert.getAlertDefinition())) {
history=alert;
}
}
assertNotNull(history);
AlertCurrentEntity current=new AlertCurrentEntity();
current.setAlertHistory(history);
current.setLatestTimestamp(new Date().getTime());
current.setOriginalTimestamp(new Date().getTime() - 10800000);
current.setMaintenanceState(MaintenanceState.OFF);
m_dao.create(current);
}
}
Class: org.apache.ambari.server.orm.dao.BlueprintDAOTest InternalCallVerifier IdentityVerifier
@Test public void testFindByName(){
BlueprintEntity entity=new BlueprintEntity();
expect(entityManager.find(eq(BlueprintEntity.class),eq("test-cluster-name"))).andReturn(entity);
replay(entityManager);
BlueprintDAO dao=new BlueprintDAO();
dao.entityManagerProvider=entityManagerProvider;
BlueprintEntity result=dao.findByName("test-cluster-name");
assertSame(result,entity);
verify(entityManagerProvider,entityManager);
}
InternalCallVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testFindAll(){
BlueprintEntity entity=new BlueprintEntity();
TypedQuery query=createStrictMock(TypedQuery.class);
expect(entityManager.createNamedQuery(eq("allBlueprints"),eq(BlueprintEntity.class))).andReturn(query);
expect(query.getResultList()).andReturn(Collections.singletonList(entity));
replay(entityManager,query);
BlueprintDAO dao=new BlueprintDAO();
dao.entityManagerProvider=entityManagerProvider;
List results=dao.findAll();
assertEquals(1,results.size());
assertSame(entity,results.get(0));
verify(entityManagerProvider,entityManager,query);
}
Class: org.apache.ambari.server.orm.dao.ClusterVersionDAOTest InternalCallVerifier NullVerifier
/**
* At all times the cluster should have a cluster version whose state is {@link org.apache.ambari.server.state.RepositoryVersionState#CURRENT}
*/
@Test public void testFindByClusterAndStateCurrent(){
createRecordsUntilStep(1);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
createRecordsUntilStep(2);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
createRecordsUntilStep(3);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
createRecordsUntilStep(4);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
createRecordsUntilStep(5);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
createRecordsUntilStep(6);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
createRecordsUntilStep(7);
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStateCurrent(cluster.getClusterName()));
}
InternalCallVerifier EqualityVerifier
@Test public void testFindByCluster(){
createRecordsUntilStep(1);
Assert.assertEquals(0,clusterVersionDAO.findByCluster("non existing").size());
Assert.assertEquals(1,clusterVersionDAO.findByCluster(cluster.getClusterName()).size());
}
InternalCallVerifier NullVerifier
@Test public void testFindByClusterAndStackAndVersion(){
createRecordsUntilStep(1);
Assert.assertNull(clusterVersionDAO.findByClusterAndStackAndVersion(cluster.getClusterName(),BAD_STACK,"non existing"));
Assert.assertNotNull(clusterVersionDAO.findByClusterAndStackAndVersion(cluster.getClusterName(),HDP_22_STACK,"2.2.0.0-995"));
}
InternalCallVerifier EqualityVerifier
/**
* Test the state of certain cluster versions.
*/
@Test public void testFindByClusterAndState(){
createRecordsUntilStep(1);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
createRecordsUntilStep(2);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
createRecordsUntilStep(3);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
createRecordsUntilStep(4);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
createRecordsUntilStep(5);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
createRecordsUntilStep(6);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
createRecordsUntilStep(7);
Assert.assertEquals(1,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.CURRENT).size());
Assert.assertEquals(2,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,clusterVersionDAO.findByClusterAndState(cluster.getClusterName(),RepositoryVersionState.UPGRADE_FAILED).size());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindByStackAndVersion(){
createRecordsUntilStep(1);
Assert.assertEquals(0,clusterVersionDAO.findByStackAndVersion("non existing","non existing","non existing").size());
Assert.assertEquals(1,clusterVersionDAO.findByStackAndVersion(HDP_22_STACK.getStackName(),HDP_22_STACK.getStackVersion(),"2.2.0.0-995").size());
}
Class: org.apache.ambari.server.orm.dao.ConfigGroupDAOTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindByName() throws Exception {
createConfigGroup("c1","hdfs-1","HDFS","some description",null,null);
ConfigGroupEntity configGroupEntity=configGroupDAO.findByName("hdfs-1");
Assert.assertNotNull(configGroupEntity);
Assert.assertEquals("c1",configGroupEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),configGroupEntity.getClusterEntity().getClusterId());
Assert.assertEquals("hdfs-1",configGroupEntity.getGroupName());
Assert.assertEquals("HDFS",configGroupEntity.getTag());
Assert.assertEquals("some description",configGroupEntity.getDescription());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreatePlaneJaneCG() throws Exception {
ConfigGroupEntity configGroupEntity=createConfigGroup("c1","hdfs-1","HDFS","some description",null,null);
Assert.assertNotNull(configGroupEntity);
Assert.assertEquals("c1",configGroupEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),configGroupEntity.getClusterEntity().getClusterId());
Assert.assertEquals("hdfs-1",configGroupEntity.getGroupName());
Assert.assertEquals("HDFS",configGroupEntity.getTag());
Assert.assertEquals("some description",configGroupEntity.getDescription());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindByTag() throws Exception {
createConfigGroup("c1","hdfs-1","HDFS","some description",null,null);
List configGroupEntities=configGroupDAO.findAllByTag("HDFS");
Assert.assertNotNull(configGroupEntities);
ConfigGroupEntity configGroupEntity=configGroupEntities.get(0);
Assert.assertNotNull(configGroupEntity);
Assert.assertEquals("c1",configGroupEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),configGroupEntity.getClusterEntity().getClusterId());
Assert.assertEquals("hdfs-1",configGroupEntity.getGroupName());
Assert.assertEquals("HDFS",configGroupEntity.getTag());
Assert.assertEquals("some description",configGroupEntity.getDescription());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindByHost() throws Exception {
List hosts=new ArrayList();
HostEntity hostEntity=new HostEntity();
hostEntity.setHostName("h1");
hostEntity.setOsType("centOS");
hosts.add(hostEntity);
ConfigGroupEntity configGroupEntity=createConfigGroup("c1","hdfs-1","HDFS","some description",hosts,null);
Assert.assertNotNull(hostEntity.getHostId());
Assert.assertNotNull(configGroupEntity);
Assert.assertTrue(configGroupEntity.getConfigGroupHostMappingEntities().size() > 0);
Assert.assertNotNull(configGroupEntity.getConfigGroupHostMappingEntities().iterator().next());
Set hostMappingEntities=configGroupHostMappingDAO.findByHostId(hostEntity.getHostId());
Assert.assertNotNull(hostMappingEntities);
for ( ConfigGroupHostMapping hostMappingEntity : hostMappingEntities) {
Assert.assertEquals(hostEntity.getHostId(),hostMappingEntity.getHostId());
Assert.assertEquals("centOS",hostMappingEntity.getHost().getOsType());
}
}
Class: org.apache.ambari.server.orm.dao.CrudDAOTest InternalCallVerifier EqualityVerifier
@Test public void testMerge(){
createSingleRecord();
RepositoryVersionEntity entity=repositoryVersionDAO.findByPK(FIRST_ID);
entity.setDisplayName("newname");
repositoryVersionDAO.merge(entity);
entity=repositoryVersionDAO.findByPK(FIRST_ID);
Assert.assertEquals("newname",entity.getDisplayName());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindAll(){
Assert.assertEquals(0,repositoryVersionDAO.findAll().size());
createSingleRecord();
createSingleRecord();
Assert.assertEquals(2,repositoryVersionDAO.findAll().size());
repositoryVersionDAO.remove(repositoryVersionDAO.findByPK(FIRST_ID));
Assert.assertEquals(1,repositoryVersionDAO.findAll().size());
}
InternalCallVerifier BooleanVerifier
@Test public void testCreate(){
createSingleRecord();
Assert.assertTrue(repositoryVersionDAO.findAll().size() == 1);
createSingleRecord();
Assert.assertTrue(repositoryVersionDAO.findAll().size() == 2);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemove(){
createSingleRecord();
createSingleRecord();
Assert.assertEquals(2,repositoryVersionDAO.findAll().size());
repositoryVersionDAO.remove(repositoryVersionDAO.findByPK(FIRST_ID));
Assert.assertEquals(1,repositoryVersionDAO.findAll().size());
Assert.assertNull(repositoryVersionDAO.findByPK(1L));
}
InternalCallVerifier NullVerifier
@Test public void testFindByPK(){
Assert.assertNull(repositoryVersionDAO.findByPK(FIRST_ID));
createSingleRecord();
Assert.assertNotNull(repositoryVersionDAO.findByPK(FIRST_ID));
}
Class: org.apache.ambari.server.orm.dao.GroupDAOTest InternalCallVerifier IdentityVerifier
@Test public void testfindGroupByName(){
final String groupName="engineering";
final GroupEntity entity=new GroupEntity();
entity.setGroupName(groupName);
TypedQuery query=createStrictMock(TypedQuery.class);
expect(entityManager.createNamedQuery(eq("groupByName"),eq(GroupEntity.class))).andReturn(query);
expect(query.setParameter("groupname",groupName)).andReturn(query);
expect(query.getSingleResult()).andReturn(entity);
replay(entityManager,query);
final GroupDAO dao=new GroupDAO();
dao.entityManagerProvider=entityManagerProvider;
final GroupEntity result=dao.findGroupByName(groupName);
assertSame(entity,result);
verify(entityManagerProvider,entityManager,query);
}
Class: org.apache.ambari.server.orm.dao.HostConfigMappingDAOTest InternalCallVerifier EqualityVerifier
@Test public void testEmptyTable() throws Exception {
createEntity(1L,"h1","global","version1");
HostEntity hostEntity=hostDAO.findByName("h1");
hostConfigMappingDAO.removeByClusterAndHostName(1L,"h1");
HostConfigMapping target=hostConfigMappingDAO.findSelectedByType(1L,hostEntity.getHostId(),"core-site");
Assert.assertEquals(null,target);
}
InternalCallVerifier EqualityVerifier
@Test public void testFindByType() throws Exception {
HostConfigMapping source=createEntity(1L,"h1","global","v1");
HostEntity hostEntity=hostDAO.findByName("h1");
Set target=hostConfigMappingDAO.findByType(1L,hostEntity.getHostId(),"global");
Assert.assertEquals("Expected one result",1,target.size());
for ( HostConfigMapping item : target) Assert.assertEquals("Expected version 'v1'",source.getVersion(),item.getVersion());
}
InternalCallVerifier EqualityVerifier
@Test public void testMerge() throws Exception {
HostConfigMapping source=createEntity(1L,"h1","global","v1");
HostEntity hostEntity=hostDAO.findByName("h1");
Set target=hostConfigMappingDAO.findByType(1L,hostEntity.getHostId(),"global");
Assert.assertEquals("Expected one result",1,target.size());
HostConfigMapping toChange=null;
for ( HostConfigMapping item : target) {
Assert.assertEquals("Expected version 'v1'",source.getVersion(),item.getVersion());
Assert.assertEquals("Expected selected flag 1",1,(int)item.getSelected());
toChange=item;
toChange.setSelected(0);
}
hostConfigMappingDAO.merge(toChange);
target=hostConfigMappingDAO.findByType(1L,hostEntity.getHostId(),"global");
Assert.assertEquals("Expected one result",1,target.size());
for ( HostConfigMapping item : target) {
Assert.assertEquals("Expected version 'v1'",source.getVersion(),item.getVersion());
Assert.assertEquals("Expected selected flag 0",0,(int)item.getSelected());
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindSelectedByType() throws Exception {
HostConfigMapping entity1=createEntity(1L,"h1","global","version1");
HostEntity hostEntity=hostDAO.findByName("h1");
HostConfigMapping target=hostConfigMappingDAO.findSelectedByType(1L,hostEntity.getHostId(),"core-site");
Assert.assertNull("Expected null entity for type 'core-site'",target);
target=hostConfigMappingDAO.findSelectedByType(1L,hostEntity.getHostId(),"global");
Assert.assertNotNull("Expected non-null entity for type 'global'",target);
Assert.assertEquals("Expected version to be '" + entity1.getVersion() + "'",entity1.getVersion(),target.getVersion());
target.setSelected(0);
hostConfigMappingDAO.merge(target);
HostConfigMapping entity2=createEntity(1L,"h1","global","version2");
target=hostConfigMappingDAO.findSelectedByType(1L,hostEntity.getHostId(),"global");
Assert.assertNotNull("Expected non-null entity for type 'global'",target);
Assert.assertEquals("Expected version to be '" + entity2.getVersion() + "'",entity2.getVersion(),target.getVersion());
Assert.assertEquals("Expected instance equality",entity2,target);
}
InternalCallVerifier EqualityVerifier
@Test public void testFindSelected() throws Exception {
createEntity(1L,"h1","global","version1");
HostConfigMapping coreSiteConfigV1=createEntity(1L,"h1","core-site","version1");
HostEntity hostEntity=hostDAO.findByName("h1");
Set targets=hostConfigMappingDAO.findSelected(1L,hostEntity.getHostId());
Assert.assertEquals("Expected two entities",2,targets.size());
coreSiteConfigV1.setSelected(0);
hostConfigMappingDAO.merge(coreSiteConfigV1);
createEntity(1L,"h1","core-site","version2");
targets=hostConfigMappingDAO.findSelected(1L,hostEntity.getHostId());
Assert.assertEquals("Expected two entities",2,targets.size());
}
Class: org.apache.ambari.server.orm.dao.HostRoleCommandDAOTest BranchVerifier InternalCallVerifier BooleanVerifier
/**
* Tests that setting the auto-skip feature of a {@link HostRoleCommandEntity}is somewhat dependenant on the {@link StageEntity}'s support for it.
*/
@Test public void testAutoSkipSupport(){
OrmTestHelper helper=m_injector.getInstance(OrmTestHelper.class);
helper.createDefaultData();
Long requestId=Long.valueOf(100L);
ClusterEntity clusterEntity=m_clusterDAO.findByName("test_cluster1");
RequestEntity requestEntity=new RequestEntity();
requestEntity.setRequestId(requestId);
requestEntity.setClusterId(clusterEntity.getClusterId());
requestEntity.setStages(new ArrayList());
m_requestDAO.create(requestEntity);
AtomicLong stageId=new AtomicLong(1);
HostEntity host=m_hostDAO.findByName("test_host1");
host.setHostRoleCommandEntities(new ArrayList());
long stageIdAutoSkipAll=stageId.getAndIncrement();
createStage(stageIdAutoSkipAll,3,host,requestEntity,HostRoleStatus.PENDING,true,true,true);
List tasks=m_hostRoleCommandDAO.findByRequest(requestId);
for ( HostRoleCommandEntity task : tasks) {
Assert.assertTrue(task.isFailureAutoSkipped());
}
long stageIdSkippableButNoAutoSkip=stageId.getAndIncrement();
createStage(stageIdSkippableButNoAutoSkip,3,host,requestEntity,HostRoleStatus.PENDING,true,false,true);
tasks=m_hostRoleCommandDAO.findByRequest(requestId);
for ( HostRoleCommandEntity task : tasks) {
StageEntity stage=task.getStage();
if (stage.getStageId() == stageIdAutoSkipAll) {
Assert.assertTrue(task.isFailureAutoSkipped());
}
else if (stage.getStageId() == stageIdSkippableButNoAutoSkip) {
Assert.assertFalse(task.isFailureAutoSkipped());
}
}
m_hostRoleCommandDAO.updateAutomaticSkipOnFailure(requestId,false,false);
tasks=m_hostRoleCommandDAO.findByRequest(requestId);
for ( HostRoleCommandEntity task : tasks) {
Assert.assertFalse(task.isFailureAutoSkipped());
}
}
InternalCallVerifier EqualityVerifier
/**
* Tests finding all tasks between a range of stages.
*/
@Test public void testFindTasksBetweenStages(){
OrmTestHelper helper=m_injector.getInstance(OrmTestHelper.class);
helper.createDefaultData();
Long requestId=Long.valueOf(100L);
ClusterEntity clusterEntity=m_clusterDAO.findByName("test_cluster1");
RequestEntity requestEntity=new RequestEntity();
requestEntity.setRequestId(requestId);
requestEntity.setClusterId(clusterEntity.getClusterId());
requestEntity.setStages(new ArrayList());
m_requestDAO.create(requestEntity);
AtomicLong stageId=new AtomicLong(1);
HostEntity host=m_hostDAO.findByName("test_host1");
host.setHostRoleCommandEntities(new ArrayList());
createStage(stageId.getAndIncrement(),3,host,requestEntity,HostRoleStatus.COMPLETED);
createStage(stageId.getAndIncrement(),2,host,requestEntity,HostRoleStatus.SKIPPED_FAILED);
createStage(stageId.getAndIncrement(),1,host,requestEntity,HostRoleStatus.ABORTED);
List tasks=m_hostRoleCommandDAO.findByStatusBetweenStages(requestId,HostRoleStatus.SKIPPED_FAILED,1,3);
Assert.assertEquals(2,tasks.size());
tasks=m_hostRoleCommandDAO.findByStatusBetweenStages(requestId,HostRoleStatus.SKIPPED_FAILED,1,1);
Assert.assertEquals(0,tasks.size());
}
Class: org.apache.ambari.server.orm.dao.HostVersionDAOTest InternalCallVerifier EqualityVerifier
/**
* Test the {@link HostVersionDAO#findByClusterAndHost(String,String)} method.
*/
@Test public void testFindByClusterAndHost(){
Assert.assertEquals(1,hostVersionDAO.findByClusterAndHost("test_cluster1","test_host1").size());
Assert.assertEquals(1,hostVersionDAO.findByClusterAndHost("test_cluster1","test_host2").size());
Assert.assertEquals(1,hostVersionDAO.findByClusterAndHost("test_cluster1","test_host3").size());
addMoreVersions();
Assert.assertEquals(3,hostVersionDAO.findByClusterAndHost("test_cluster1","test_host1").size());
Assert.assertEquals(3,hostVersionDAO.findByClusterAndHost("test_cluster1","test_host2").size());
Assert.assertEquals(3,hostVersionDAO.findByClusterAndHost("test_cluster1","test_host3").size());
}
InternalCallVerifier EqualityVerifier
/**
* Test the {@link HostVersionDAO#findByClusterStackAndVersion(String,org.apache.ambari.server.state.StackId,String)} method.
*/
@Test public void testFindByClusterStackAndVersion(){
Assert.assertEquals(3,hostVersionDAO.findByClusterStackAndVersion("test_cluster1",HDP_22_STACK,repoVersion_2200).size());
Assert.assertEquals(3,hostVersionDAO.findAll().size());
addMoreVersions();
Assert.assertEquals(3,hostVersionDAO.findByClusterStackAndVersion("test_cluster1",HDP_22_STACK,repoVersion_2201).size());
Assert.assertEquals(3,hostVersionDAO.findByClusterStackAndVersion("test_cluster1",HDP_22_STACK,repoVersion_2202).size());
Assert.assertEquals(9,hostVersionDAO.findAll().size());
}
InternalCallVerifier EqualityVerifier
/**
* Test the {@link HostVersionDAO#findByClusterStackVersionAndHost(String,StackId,String,String)} method.
*/
@Test public void testFindByClusterStackVersionAndHost(){
HostEntity host1=hostDAO.findByName("test_host1");
HostEntity host2=hostDAO.findByName("test_host2");
HostEntity host3=hostDAO.findByName("test_host3");
HostVersionEntity hostVersionEntity1=new HostVersionEntity(host1,helper.getOrCreateRepositoryVersion(HDP_22_STACK,repoVersion_2200),RepositoryVersionState.CURRENT);
hostVersionEntity1.setId(1L);
HostVersionEntity hostVersionEntity2=new HostVersionEntity(host2,helper.getOrCreateRepositoryVersion(HDP_22_STACK,repoVersion_2200),RepositoryVersionState.INSTALLED);
hostVersionEntity2.setId(2L);
HostVersionEntity hostVersionEntity3=new HostVersionEntity(host3,helper.getOrCreateRepositoryVersion(HDP_22_STACK,repoVersion_2200),RepositoryVersionState.INSTALLED);
hostVersionEntity3.setId(3L);
Assert.assertEquals(hostVersionEntity1,hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,repoVersion_2200,"test_host1"));
Assert.assertEquals(hostVersionEntity2,hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,repoVersion_2200,"test_host2"));
Assert.assertEquals(hostVersionEntity3,hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,repoVersion_2200,"test_host3"));
Assert.assertEquals(null,hostVersionDAO.findByClusterStackVersionAndHost("non_existent_cluster",HDP_22_STACK,repoVersion_2200,"test_host3"));
Assert.assertEquals(null,hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",BAD_STACK,repoVersion_2200,"test_host3"));
Assert.assertEquals(null,hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,"non_existent_version","test_host3"));
Assert.assertEquals(null,hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,"non_existent_version","non_existent_host"));
addMoreVersions();
HostVersionEntity hostVersionEntity1LastExpected=new HostVersionEntity(host1,helper.getOrCreateRepositoryVersion(HDP_22_STACK,repoVersion_2202),RepositoryVersionState.INSTALLED);
HostVersionEntity hostVersionEntity2LastExpected=new HostVersionEntity(host2,helper.getOrCreateRepositoryVersion(HDP_22_STACK,repoVersion_2202),RepositoryVersionState.UPGRADING);
HostVersionEntity hostVersionEntity3LastExpected=new HostVersionEntity(host3,helper.getOrCreateRepositoryVersion(HDP_22_STACK,repoVersion_2202),RepositoryVersionState.UPGRADE_FAILED);
HostVersionEntity hostVersionEntity1LastActual=hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,repoVersion_2202,"test_host1");
HostVersionEntity hostVersionEntity2LastActual=hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,repoVersion_2202,"test_host2");
HostVersionEntity hostVersionEntity3LastActual=hostVersionDAO.findByClusterStackVersionAndHost("test_cluster1",HDP_22_STACK,repoVersion_2202,"test_host3");
Assert.assertEquals(hostVersionEntity1LastExpected,new HostVersionEntity(hostVersionEntity1LastActual));
Assert.assertEquals(hostVersionEntity2LastExpected,new HostVersionEntity(hostVersionEntity2LastActual));
Assert.assertEquals(hostVersionEntity3LastExpected,new HostVersionEntity(hostVersionEntity3LastActual));
}
InternalCallVerifier EqualityVerifier
/**
* Test the {@link HostVersionDAO#findByHost(String)} method.
*/
@Test public void testFindByHost(){
Assert.assertEquals(1,hostVersionDAO.findByHost("test_host1").size());
Assert.assertEquals(1,hostVersionDAO.findByHost("test_host2").size());
Assert.assertEquals(1,hostVersionDAO.findByHost("test_host3").size());
addMoreVersions();
Assert.assertEquals(3,hostVersionDAO.findByHost("test_host1").size());
Assert.assertEquals(3,hostVersionDAO.findByHost("test_host2").size());
Assert.assertEquals(3,hostVersionDAO.findByHost("test_host3").size());
}
InternalCallVerifier EqualityVerifier
/**
* Test the {@link HostVersionDAO#findByClusterHostAndState(String,String,org.apache.ambari.server.state.RepositoryVersionState)} method.
*/
@Test public void testFindByClusterHostAndState(){
Assert.assertEquals(1,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host1",RepositoryVersionState.CURRENT).size());
Assert.assertEquals(0,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host1",RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(0,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host2",RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(0,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host3",RepositoryVersionState.UPGRADE_FAILED).size());
addMoreVersions();
Assert.assertEquals(2,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host1",RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(2,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host2",RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(2,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host3",RepositoryVersionState.INSTALLED).size());
Assert.assertEquals(1,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host1",RepositoryVersionState.CURRENT).size());
Assert.assertEquals(1,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host2",RepositoryVersionState.UPGRADING).size());
Assert.assertEquals(1,hostVersionDAO.findByClusterHostAndState("test_cluster1","test_host3",RepositoryVersionState.UPGRADE_FAILED).size());
}
Class: org.apache.ambari.server.orm.dao.KerberosDescriptorDAOTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPersistNewKerberosDescriptorEntity(){
KerberosDescriptorEntity kerberosDescriptorEntity=new KerberosDescriptorEntity();
kerberosDescriptorEntity.setName(TEST_KERBEROS_DESCRIPTOR_ENTITY_NAME);
Capture capturedArgument=EasyMock.newCapture();
entityManager.persist(capture(capturedArgument));
replay(entityManager);
kerberosDescriptorDAO.create(kerberosDescriptorEntity);
Assert.assertNotNull(capturedArgument);
Assert.assertEquals("The persisted object is not the expected one",kerberosDescriptorEntity,capturedArgument.getValue());
}
Class: org.apache.ambari.server.orm.dao.RepositoryVersionDAOTest UtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testCreate(){
UUID uuid=UUID.randomUUID();
RepositoryVersionEntity first=createSingleRecord();
Assert.assertNotNull(first);
StackEntity stackEntity=stackDAO.find(first.getStackName(),first.getStackVersion());
Assert.assertNotNull(stackEntity);
RepositoryVersionEntity dupVersion=new RepositoryVersionEntity();
dupVersion.setDisplayName("display name " + uuid.toString());
dupVersion.setOperatingSystems("repositories");
dupVersion.setStack(stackEntity);
dupVersion.setVersion(first.getVersion());
boolean exceptionThrown=false;
try {
repositoryVersionDAO.create(stackEntity,dupVersion.getVersion(),dupVersion.getDisplayName(),dupVersion.getOperatingSystemsJson());
}
catch ( AmbariException e) {
exceptionThrown=true;
Assert.assertTrue(e.getMessage().contains("already exists"));
}
Assert.assertTrue(exceptionThrown);
exceptionThrown=false;
dupVersion.setVersion("2.3-1234");
try {
repositoryVersionDAO.create(stackEntity,dupVersion.getVersion(),dupVersion.getDisplayName(),dupVersion.getOperatingSystemsJson());
}
catch ( AmbariException e) {
exceptionThrown=true;
Assert.assertTrue(e.getMessage().contains("needs to belong to stack"));
}
Assert.assertTrue(exceptionThrown);
dupVersion.setVersion(stackEntity.getStackVersion() + "-1234");
try {
repositoryVersionDAO.create(stackEntity,dupVersion.getVersion(),dupVersion.getDisplayName(),dupVersion.getOperatingSystemsJson());
}
catch ( AmbariException e) {
Assert.fail("Did not expect a failure creating the Repository Version");
}
}
InternalCallVerifier EqualityVerifier
@Test public void testFindByStack(){
createSingleRecord();
Assert.assertEquals(0,repositoryVersionDAO.findByStack(BAD_STACK).size());
Assert.assertEquals(1,repositoryVersionDAO.findByStack(HDP_206).size());
}
InternalCallVerifier NullVerifier
@Test public void testDeleteCascade(){
long clusterId=helper.createCluster();
ClusterEntity cluster=clusterDAO.findById(clusterId);
createSingleRecord();
final RepositoryVersionEntity entity=repositoryVersionDAO.findByStackAndVersion(HDP_206,"version");
ClusterVersionEntity cvA=new ClusterVersionEntity(cluster,entity,RepositoryVersionState.INSTALLED,System.currentTimeMillis(),System.currentTimeMillis(),"admin");
clusterVersionDAO.create(cvA);
long cvAId=cvA.getId();
cvA=clusterVersionDAO.findByPK(cvAId);
Assert.assertNotNull(cvA.getRepositoryVersion());
final RepositoryVersionEntity newEntity=repositoryVersionDAO.findByStackAndVersion(HDP_206,"version");
try {
repositoryVersionDAO.remove(newEntity);
}
catch ( Exception e) {
Assert.assertNotNull(clusterVersionDAO.findByPK(cvAId));
}
}
InternalCallVerifier NullVerifier
@Test public void testDelete(){
createSingleRecord();
Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,"version"));
final RepositoryVersionEntity entity=repositoryVersionDAO.findByStackAndVersion(HDP_206,"version");
repositoryVersionDAO.remove(entity);
Assert.assertNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,"version"));
}
InternalCallVerifier NullVerifier
@Test public void testFindByStackAndVersion(){
createSingleRecord();
Assert.assertNull(repositoryVersionDAO.findByStackAndVersion(BAD_STACK,"non existing"));
Assert.assertNotNull(repositoryVersionDAO.findByStackAndVersion(HDP_206,"version"));
}
InternalCallVerifier NullVerifier
@Test public void testFindByDisplayName(){
createSingleRecord();
Assert.assertNull(repositoryVersionDAO.findByDisplayName("non existing"));
Assert.assertNotNull(repositoryVersionDAO.findByDisplayName("display name"));
}
Class: org.apache.ambari.server.orm.dao.RequestDAOTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testCalculatedStatus() throws Exception {
createGraph();
RequestEntity requestEntity=requestDAO.findByPK(100L);
CalculatedStatus calc1=CalculatedStatus.statusFromStageEntities(requestEntity.getStages());
Map map=hostRoleCommandDAO.findAggregateCounts(100L);
CalculatedStatus calc2=CalculatedStatus.statusFromStageSummary(map,map.keySet());
Assert.assertEquals(HostRoleStatus.IN_PROGRESS,calc1.getStatus());
Assert.assertEquals(calc1.getStatus(),calc2.getStatus());
Assert.assertEquals(calc1.getPercent(),calc2.getPercent(),0.01d);
Set group=new HashSet();
group.add(2L);
group.add(3L);
group.add(4L);
List stages=stageDAO.findByStageIds(requestEntity.getRequestId(),group);
CalculatedStatus calc3=CalculatedStatus.statusFromStageEntities(stages);
CalculatedStatus calc4=CalculatedStatus.statusFromStageSummary(map,group);
Assert.assertEquals(100d,calc3.getPercent(),0.01d);
Assert.assertEquals(HostRoleStatus.COMPLETED,calc3.getStatus());
Assert.assertEquals(calc3.getPercent(),calc4.getPercent(),0.01d);
Assert.assertEquals(calc3.getStatus(),calc4.getStatus());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindAll() throws Exception {
RequestDAO dao=injector.getInstance(RequestDAO.class);
Set set=Collections.emptySet();
List list=dao.findByPks(set);
Assert.assertEquals(0,list.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindAllRequestIds() throws Exception {
RequestDAO dao=injector.getInstance(RequestDAO.class);
List list=dao.findAllRequestIds(0,true);
Assert.assertEquals(0,list.size());
}
Class: org.apache.ambari.server.orm.dao.RequestScheduleDAOTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateRequestSchedule() throws Exception {
RequestScheduleEntity scheduleEntity=createScheduleEntity();
Assert.assertTrue(scheduleEntity.getScheduleId() > 0);
Assert.assertEquals("SCHEDULED",scheduleEntity.getStatus());
Assert.assertEquals("12",scheduleEntity.getHours());
RequestScheduleBatchRequestEntity batchRequestEntity=scheduleEntity.getRequestScheduleBatchRequestEntities().iterator().next();
Assert.assertNotNull(batchRequestEntity);
Assert.assertEquals(testUri,batchRequestEntity.getRequestUri());
Assert.assertEquals(testType,batchRequestEntity.getRequestType());
Assert.assertEquals(testBody,batchRequestEntity.getRequestBodyAsString());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindById() throws Exception {
RequestScheduleEntity scheduleEntity=createScheduleEntity();
RequestScheduleEntity testScheduleEntity=requestScheduleDAO.findById(scheduleEntity.getScheduleId());
Assert.assertEquals(scheduleEntity,testScheduleEntity);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindByStatus() throws Exception {
RequestScheduleEntity scheduleEntity=createScheduleEntity();
List scheduleEntities=requestScheduleDAO.findByStatus("SCHEDULED");
Assert.assertNotNull(scheduleEntities);
Assert.assertEquals(scheduleEntity,scheduleEntities.get(0));
}
Class: org.apache.ambari.server.orm.dao.ServiceConfigDAOTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetLastServiceConfig() throws Exception {
createServiceConfig("HDFS","admin",1L,1L,1111L,null);
createServiceConfig("HDFS","admin",2L,2L,2222L,null);
createServiceConfig("YARN","admin",1L,3L,3333L,null);
ServiceConfigEntity serviceConfigEntity=serviceConfigDAO.getLastServiceConfig(1L,"HDFS");
Assert.assertNotNull(serviceConfigEntity);
Assert.assertEquals("c1",serviceConfigEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getClusterEntity().getClusterId());
Assert.assertEquals("HDFS",serviceConfigEntity.getServiceName());
Assert.assertEquals(Long.valueOf(2222L),serviceConfigEntity.getCreateTimestamp());
Assert.assertEquals("admin",serviceConfigEntity.getUser());
Assert.assertEquals(Long.valueOf(2),serviceConfigEntity.getVersion());
Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetLastServiceConfigs() throws Exception {
createServiceConfig("HDFS","admin",1L,1L,1111L,null);
createServiceConfig("HDFS","admin",2L,2L,2222L,null);
createServiceConfig("YARN","admin",1L,3L,3333L,null);
List serviceConfigEntities=serviceConfigDAO.getLastServiceConfigs(clusterDAO.findByName("c1").getClusterId());
Assert.assertNotNull(serviceConfigEntities);
Assert.assertEquals(2,serviceConfigEntities.size());
for ( ServiceConfigEntity sce : serviceConfigEntities) {
if ("HDFS".equals(sce.getServiceName())) {
Assert.assertEquals("c1",sce.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),sce.getClusterEntity().getClusterId());
Assert.assertEquals(Long.valueOf(2222L),sce.getCreateTimestamp());
Assert.assertEquals(Long.valueOf(2),sce.getVersion());
Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(sce.getServiceConfigId());
}
if ("YARN".equals(sce.getServiceName())) {
Assert.assertEquals("c1",sce.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),sce.getClusterEntity().getClusterId());
Assert.assertEquals(Long.valueOf(3333L),sce.getCreateTimestamp());
Assert.assertEquals(Long.valueOf(1),sce.getVersion());
Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(sce.getServiceConfigId());
}
Assert.assertEquals("admin",sce.getUser());
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetClusterConfigMappingByStack() throws Exception {
initClusterEntities();
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
List clusterConfigMappingEntities=clusterDAO.getClusterConfigMappingsByStack(clusterEntity.getClusterId(),HDP_01);
Assert.assertEquals(2,clusterConfigMappingEntities.size());
ClusterConfigMappingEntity e1=clusterConfigMappingEntities.get(0);
String tag1=e1.getTag();
Assert.assertEquals("version1",tag1);
String type1=e1.getType();
Assert.assertEquals("oozie-site",type1);
ClusterConfigMappingEntity e2=clusterConfigMappingEntities.get(1);
String tag2=e2.getTag();
Assert.assertEquals("version2",tag2);
String type2=e2.getType();
Assert.assertEquals("oozie-site",type2);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConfiguration() throws Exception {
initClusterEntities();
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
Assert.assertTrue(!clusterEntity.getClusterConfigEntities().isEmpty());
Assert.assertTrue(!clusterEntity.getConfigMappingEntities().isEmpty());
Assert.assertEquals(5,clusterEntity.getClusterConfigEntities().size());
Assert.assertEquals(3,clusterEntity.getConfigMappingEntities().size());
}
InternalCallVerifier EqualityVerifier
/**
* Test
* When the last configuration of a given configuration type to be stored into the clusterconfig table is
* for a configuration group, there is no corresponding entry generated in the clusterconfigmapping.
* Therefore, the getlatestconfiguration query should skip configuration groups stored in the clusterconfig table.
* Test to determine the latest configuration of a given type whose version_tag
* exists in the clusterconfigmapping table.
*/
@Test public void testGetLatestClusterConfigMappingByStack() throws Exception {
ClusterImpl cluster=createMockBuilder(ClusterImpl.class).addMockedMethod("getSessionManager").addMockedMethod("getClusterName").addMockedMethod("getSessionAttributes").createMock();
initClusterEntities();
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
List clusterConfigMappingEntities=clusterDAO.getClusterConfigMappingsByStack(clusterEntity.getClusterId(),HDP_01);
Collection latestMapingEntities=cluster.getLatestConfigMapping(clusterConfigMappingEntities);
Assert.assertEquals(1,latestMapingEntities.size());
for ( ClusterConfigMappingEntity e : latestMapingEntities) {
Assert.assertEquals("version2",e.getTag());
Assert.assertEquals("oozie-site",e.getType());
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindByServiceAndVersion() throws Exception {
createServiceConfig("HDFS","admin",1L,1L,1111L,null);
ServiceConfigEntity serviceConfigEntity=serviceConfigDAO.findByServiceAndVersion("HDFS",1L);
Assert.assertNotNull(serviceConfigEntity);
Assert.assertEquals("c1",serviceConfigEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getClusterEntity().getClusterId());
Assert.assertEquals("HDFS",serviceConfigEntity.getServiceName());
Assert.assertEquals(Long.valueOf(1111L),serviceConfigEntity.getCreateTimestamp());
Assert.assertEquals("admin",serviceConfigEntity.getUser());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getVersion());
Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAllServiceConfigs() throws Exception {
ServiceConfigEntity serviceConfigEntity=null;
serviceConfigEntity=createServiceConfig("HDFS","admin",1L,1L,10L,null);
serviceConfigEntity=createServiceConfig("HDFS","admin",2L,2L,20L,null);
serviceConfigEntity=createServiceConfig("HDFS","admin",3L,3L,30L,null);
serviceConfigEntity=createServiceConfig("YARN","admin",1L,4L,40L,null);
long clusterId=serviceConfigEntity.getClusterId();
List serviceConfigs=serviceConfigDAO.getAllServiceConfigsForClusterAndStack(clusterId,HDP_01);
Assert.assertEquals(4,serviceConfigs.size());
serviceConfigs=serviceConfigDAO.getAllServiceConfigsForClusterAndStack(clusterId,HDP_02);
Assert.assertEquals(0,serviceConfigs.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindServiceConfigEntity() throws Exception {
ServiceConfigEntity sce=createServiceConfig("HDFS","admin",1L,1L,1111L,null);
ServiceConfigEntity serviceConfigEntity=serviceConfigDAO.find(sce.getServiceConfigId());
Assert.assertNotNull(serviceConfigEntity);
Assert.assertEquals("c1",serviceConfigEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getClusterEntity().getClusterId());
Assert.assertEquals("HDFS",serviceConfigEntity.getServiceName());
Assert.assertEquals(Long.valueOf(1111L),serviceConfigEntity.getCreateTimestamp());
Assert.assertEquals("admin",serviceConfigEntity.getUser());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getVersion());
Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetServiceConfigs() throws Exception {
createServiceConfig("HDFS","admin",1L,1L,1111L,null);
createServiceConfig("HDFS","admin",2L,2L,2222L,null);
createServiceConfig("YARN","admin",1L,3L,3333L,null);
List serviceConfigEntities=serviceConfigDAO.getServiceConfigs(clusterDAO.findByName("c1").getClusterId());
Assert.assertNotNull(serviceConfigEntities);
Assert.assertEquals(3,serviceConfigEntities.size());
for ( ServiceConfigEntity sce : serviceConfigEntities) {
if ("HDFS".equals(sce.getServiceName()) && (sce.getVersion() == 1)) {
Assert.assertEquals("c1",sce.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),sce.getClusterEntity().getClusterId());
Assert.assertEquals(Long.valueOf(1111L),sce.getCreateTimestamp());
Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(sce.getServiceConfigId());
}
else if ("HDFS".equals(sce.getServiceName()) && (sce.getVersion() == 2)) {
Assert.assertEquals("c1",sce.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),sce.getClusterEntity().getClusterId());
Assert.assertEquals(Long.valueOf(2222L),sce.getCreateTimestamp());
Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(sce.getServiceConfigId());
}
else if ("YARN".equals(sce.getServiceName())) {
Assert.assertEquals("c1",sce.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),sce.getClusterEntity().getClusterId());
Assert.assertEquals(Long.valueOf(3333L),sce.getCreateTimestamp());
Assert.assertEquals(Long.valueOf(1),sce.getVersion());
Assert.assertTrue(sce.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(sce.getServiceConfigId());
}
else {
Assert.fail();
}
Assert.assertEquals("admin",sce.getUser());
}
}
InternalCallVerifier EqualityVerifier
/**
* Test
* When the last configuration of a given configuration type to be stored into the clusterconfig table is
* for a configuration group, there is no corresponding entry generated in the clusterconfigmapping.
* Therefore, the getlatestconfiguration query should skip configuration groups stored in the clusterconfig table.
* Test to determine the latest configuration of a given type whose version_tag
* exists in the clusterconfigmapping table.
*/
@Test public void testGetLatestClusterConfigMappingByStackCG() throws Exception {
ClusterImpl cluster=createMockBuilder(ClusterImpl.class).addMockedMethod("getSessionManager").addMockedMethod("getClusterName").addMockedMethod("getSessionAttributes").createMock();
initClusterEntitiesWithConfigGroups();
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
List clusterConfigMappingEntities=clusterDAO.getClusterConfigMappingsByStack(clusterEntity.getClusterId(),HDP_01);
Collection latestMapingEntities=cluster.getLatestConfigMapping(clusterConfigMappingEntities);
Assert.assertEquals(1,latestMapingEntities.size());
for ( ClusterConfigMappingEntity e : latestMapingEntities) {
Assert.assertEquals("version2",e.getTag());
Assert.assertEquals("oozie-site",e.getType());
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetLatestServiceConfigs() throws Exception {
ServiceConfigEntity serviceConfigEntity=null;
serviceConfigEntity=createServiceConfig("HDFS","admin",1L,1L,10L,null);
serviceConfigEntity=createServiceConfig("HDFS","admin",2L,2L,20L,null);
serviceConfigEntity=createServiceConfig("HDFS","admin",3L,3L,30L,null);
serviceConfigEntity=createServiceConfig("YARN","admin",1L,4L,40L,null);
StackEntity stackEntity=stackDAO.find(HDP_02.getStackName(),HDP_02.getStackVersion());
ClusterEntity clusterEntity=serviceConfigEntity.getClusterEntity();
clusterEntity.setDesiredStack(stackEntity);
clusterDAO.merge(clusterEntity);
serviceConfigEntity=createServiceConfig("HDFS","admin",4L,5L,50L,null);
serviceConfigEntity=createServiceConfig("HDFS","admin",5L,6L,60L,null);
serviceConfigEntity=createServiceConfig("YARN","admin",2L,7L,70L,null);
long clusterId=serviceConfigEntity.getClusterId();
List serviceConfigs=serviceConfigDAO.getLatestServiceConfigs(clusterId,HDP_01);
Assert.assertEquals(2,serviceConfigs.size());
serviceConfigs=serviceConfigDAO.getLatestServiceConfigs(clusterId,HDP_02);
Assert.assertEquals(2,serviceConfigs.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceConfigVersion() throws Exception {
ServiceConfigEntity serviceConfigEntity=createServiceConfig("HDFS","admin",1L,1L,1111L,null);
Assert.assertNotNull(serviceConfigEntity);
Assert.assertEquals("c1",serviceConfigEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getClusterEntity().getClusterId());
Assert.assertEquals("HDFS",serviceConfigEntity.getServiceName());
Assert.assertEquals(Long.valueOf(1111L),serviceConfigEntity.getCreateTimestamp());
Assert.assertEquals("admin",serviceConfigEntity.getUser());
Assert.assertEquals(Long.valueOf(1),serviceConfigEntity.getVersion());
Assert.assertTrue(serviceConfigEntity.getClusterConfigEntities().isEmpty());
Assert.assertNotNull(serviceConfigEntity.getServiceConfigId());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindMaxVersions() throws Exception {
createServiceConfig("HDFS","admin",1L,1L,1111L,null);
createServiceConfig("HDFS","admin",2L,2L,2222L,null);
createServiceConfig("YARN","admin",1L,3L,3333L,null);
long hdfsVersion=serviceConfigDAO.findNextServiceConfigVersion(clusterDAO.findByName("c1").getClusterId(),"HDFS");
long yarnVersion=serviceConfigDAO.findNextServiceConfigVersion(clusterDAO.findByName("c1").getClusterId(),"YARN");
Assert.assertEquals(3,hdfsVersion);
Assert.assertEquals(2,yarnVersion);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test the get latest configuration query against clusterconfig table with configuration groups inserted
*/
@Test public void testGetClusterConfigMappingByStackCG() throws Exception {
initClusterEntitiesWithConfigGroups();
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
List configGroupEntities=configGroupDAO.findAllByTag("OOZIE");
Assert.assertNotNull(configGroupEntities);
ConfigGroupEntity configGroupEntity=configGroupEntities.get(0);
Assert.assertNotNull(configGroupEntity);
Assert.assertEquals("c1",configGroupEntity.getClusterEntity().getClusterName());
Assert.assertEquals(Long.valueOf(1),configGroupEntity.getClusterEntity().getClusterId());
Assert.assertEquals("oozie_server",configGroupEntity.getGroupName());
Assert.assertEquals("OOZIE",configGroupEntity.getTag());
Assert.assertEquals("oozie server",configGroupEntity.getDescription());
List clusterConfigMappingEntities=clusterDAO.getClusterConfigMappingsByStack(clusterEntity.getClusterId(),HDP_01);
Assert.assertEquals(2,clusterConfigMappingEntities.size());
ClusterConfigMappingEntity e1=clusterConfigMappingEntities.get(0);
String tag1=e1.getTag();
Assert.assertEquals("version1",tag1);
String type1=e1.getType();
Assert.assertEquals("oozie-site",type1);
ClusterConfigMappingEntity e2=clusterConfigMappingEntities.get(1);
String tag2=e2.getTag();
Assert.assertEquals("version2",tag2);
String type2=e2.getType();
Assert.assertEquals("oozie-site",type2);
}
Class: org.apache.ambari.server.orm.dao.SettingDAOTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCRUD(){
Map entities=new HashMap<>();
for (int i=0; i < 3; i++) {
SettingEntity entity=new SettingEntity();
entity.setName("motd" + i);
entity.setContent("test content" + i);
entity.setUpdatedBy("ambari");
entity.setSettingType("ambari-server");
entity.setUpdateTimestamp(System.currentTimeMillis());
entities.put(entity.getName(),entity);
dao.create(entity);
}
retrieveAndValidateSame(entities);
assertEquals(entities.size(),dao.findAll().size());
assertNull(dao.findByName("does-not-exist"));
for ( Map.Entry entry : entities.entrySet()) {
entry.getValue().setContent(Objects.toString(Math.random()));
dao.merge(entry.getValue());
}
retrieveAndValidateSame(entities);
assertEquals(entities.size(),dao.findAll().size());
for ( Map.Entry entry : entities.entrySet()) {
dao.removeByName(entry.getKey());
}
assertEquals(0,dao.findAll().size());
}
Class: org.apache.ambari.server.orm.dao.StageDAOTest InternalCallVerifier EqualityVerifier
/**
* Tests that the Ambari {@link org.apache.ambari.server.controller.spi.Predicate}can be converted and submitted to JPA correctly to return a restricted result set.
*/
@Test public void testStagePredicate() throws Exception {
Predicate predicate=new PredicateBuilder().property(StageResourceProvider.STAGE_CLUSTER_NAME).equals("c1").toPredicate();
List entities=stageDao.findAll(PropertyHelper.getReadRequest(),predicate);
assertEquals(5,entities.size());
predicate=new PredicateBuilder().property(StageResourceProvider.STAGE_CONTEXT).equals("request context for 3").or().property(StageResourceProvider.STAGE_CONTEXT).equals("request context for 4").toPredicate();
entities=stageDao.findAll(PropertyHelper.getReadRequest(),predicate);
assertEquals(2,entities.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that JPA does the sorting work for us.
*/
@Test public void testStageSorting() throws Exception {
List sortProperties=new ArrayList();
SortRequest sortRequest=new SortRequestImpl(sortProperties);
Predicate predicate=new PredicateBuilder().property(StageResourceProvider.STAGE_CLUSTER_NAME).equals("c1").toPredicate();
sortProperties.add(new SortRequestProperty(StageResourceProvider.STAGE_LOG_INFO,SortRequest.Order.ASC));
Request request=PropertyHelper.getReadRequest(new HashSet(Arrays.asList()),null,null,null,sortRequest);
List entities=stageDao.findAll(request,predicate);
assertEquals(5,entities.size());
String lastInfo=null;
for ( StageEntity entity : entities) {
if (lastInfo == null) {
lastInfo=entity.getLogInfo();
continue;
}
String currentInfo=entity.getLogInfo();
assertTrue(lastInfo.compareTo(currentInfo) <= 0);
lastInfo=currentInfo;
}
sortProperties.clear();
sortProperties.add(new SortRequestProperty(StageResourceProvider.STAGE_LOG_INFO,SortRequest.Order.DESC));
entities=stageDao.findAll(request,predicate);
assertEquals(5,entities.size());
lastInfo=null;
for ( StageEntity entity : entities) {
if (null == lastInfo) {
lastInfo=entity.getLogInfo();
continue;
}
String currentInfo=entity.getLogInfo();
assertTrue(lastInfo.compareTo(currentInfo) >= 0);
lastInfo=currentInfo;
}
}
TestInitializer InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
stageDao=injector.getInstance(StageDAO.class);
OrmTestHelper helper=injector.getInstance(OrmTestHelper.class);
Long clusterId=helper.createCluster();
RequestDAO requestDao=injector.getInstance(RequestDAO.class);
RequestEntity requestEntity=new RequestEntity();
requestEntity.setClusterId(clusterId);
requestEntity.setStartTime(1000L);
requestEntity.setEndTime(1200L);
requestEntity.setRequestId(99L);
requestDao.create(requestEntity);
for (int i=0; i < 5; i++) {
StageEntity definition=new StageEntity();
definition.setClusterId(clusterId);
definition.setRequestId(99L);
definition.setStageId((long)(100 + i));
definition.setLogInfo("log info for " + i);
definition.setRequestContext("request context for " + i);
definition.setRequest(requestEntity);
stageDao.create(definition);
}
List definitions=stageDao.findAll();
assertNotNull(definitions);
assertEquals(5,definitions.size());
}
Class: org.apache.ambari.server.orm.dao.TopologyLogicalRequestDAOTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testFindAll() throws Exception {
create();
List logicalRequestEntities=logicalRequestDAO.findAll();
Assert.assertEquals(1,logicalRequestEntities.size());
TopologyLogicalRequestEntity logicalRequestEntity=logicalRequestEntities.iterator().next();
Assert.assertNotNull(logicalRequestEntity.getTopologyRequestId());
Assert.assertEquals(Long.valueOf(1),logicalRequestEntity.getId());
Assert.assertEquals("description",logicalRequestEntity.getDescription());
Assert.assertNotNull(logicalRequestEntity.getTopologyRequestEntity());
Collection hostRequestEntities=logicalRequestEntity.getTopologyHostRequestEntities();
Assert.assertEquals(1,hostRequestEntities.size());
TopologyHostRequestEntity hostRequestEntity=hostRequestEntities.iterator().next();
Assert.assertNotNull(hostRequestEntity.getTopologyHostGroupEntity());
Assert.assertEquals(hostRequestEntity.getTopologyHostGroupEntity().getId(),hostRequestEntity.getHostGroupId());
Collection taskEntities=hostRequestEntity.getTopologyHostTaskEntities();
Assert.assertEquals(1,taskEntities.size());
TopologyHostTaskEntity taskEntity=taskEntities.iterator().next();
Assert.assertNotNull(taskEntity.getTopologyHostRequestEntity());
Assert.assertNotNull(taskEntity.getTopologyLogicalTaskEntities());
Assert.assertEquals(1,taskEntity.getTopologyLogicalTaskEntities().size());
Assert.assertNotNull(taskEntity.getTopologyLogicalTaskEntities().iterator().next().getTopologyHostTaskEntity());
}
Class: org.apache.ambari.server.orm.dao.TopologyRequestDAOTest InternalCallVerifier EqualityVerifier
@Test public void testRemoveAll() throws Exception {
create();
requestDAO.removeAll(clusterId);
List requestEntities=requestDAO.findByClusterId(clusterId);
Assert.assertEquals("All topology request entities associated with cluster should be removed !",0,requestEntities.size());
}
Class: org.apache.ambari.server.orm.dao.UpgradeDAOTest InternalCallVerifier BooleanVerifier
/**
* Tests that certain columns in an {@link UpgradeEntity} are updatable.
* @throws Exception
*/
@Test public void testUpdatableColumns() throws Exception {
UpgradeEntity upgradeEntity=new UpgradeEntity();
upgradeEntity.setId(11L);
upgradeEntity.setClusterId(Long.valueOf(1));
upgradeEntity.setDirection(Direction.UPGRADE);
upgradeEntity.setRequestId(Long.valueOf(1));
upgradeEntity.setFromVersion("2.2.0.0-1234");
upgradeEntity.setToVersion("2.3.0.0-4567");
upgradeEntity.setUpgradeType(UpgradeType.ROLLING);
upgradeEntity.setUpgradePackage("test-upgrade");
dao.create(upgradeEntity);
UpgradeEntity lastUpgradeForCluster=dao.findLastUpgradeForCluster(1);
Assert.assertFalse(lastUpgradeForCluster.isComponentFailureAutoSkipped());
Assert.assertFalse(lastUpgradeForCluster.isServiceCheckFailureAutoSkipped());
lastUpgradeForCluster.setAutoSkipComponentFailures(true);
lastUpgradeForCluster.setAutoSkipServiceCheckFailures(true);
dao.merge(lastUpgradeForCluster);
lastUpgradeForCluster=dao.findLastUpgradeForCluster(1);
Assert.assertTrue(lastUpgradeForCluster.isComponentFailureAutoSkipped());
Assert.assertTrue(lastUpgradeForCluster.isServiceCheckFailureAutoSkipped());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindUpgrade() throws Exception {
List items=dao.findUpgrades(clusterId.longValue());
assertTrue(items.size() > 0);
UpgradeEntity entity=dao.findUpgrade(items.get(0).getId().longValue());
assertNotNull(entity);
assertEquals(1,entity.getUpgradeGroups().size());
UpgradeGroupEntity group=dao.findUpgradeGroup(entity.getUpgradeGroups().get(0).getId().longValue());
assertNotNull(group);
Assert.assertNotSame(entity.getUpgradeGroups().get(0),group);
assertEquals("group_name",group.getName());
assertEquals("group title",group.getTitle());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Create upgrades and downgrades and verify only latest upgrade is given
* @throws Exception
*/
@Test public void testFindLastUpgradeForCluster() throws Exception {
UpgradeEntity entity1=new UpgradeEntity();
entity1.setId(11L);
entity1.setClusterId(Long.valueOf(1));
entity1.setDirection(Direction.UPGRADE);
entity1.setRequestId(Long.valueOf(1));
entity1.setFromVersion("2.2.0.0-1234");
entity1.setToVersion("2.3.0.0-4567");
entity1.setUpgradeType(UpgradeType.ROLLING);
entity1.setUpgradePackage("test-upgrade");
entity1.setDowngradeAllowed(true);
dao.create(entity1);
UpgradeEntity entity2=new UpgradeEntity();
entity2.setId(22L);
entity2.setClusterId(Long.valueOf(1));
entity2.setDirection(Direction.DOWNGRADE);
entity2.setRequestId(Long.valueOf(1));
entity2.setFromVersion("2.3.0.0-4567");
entity2.setToVersion("2.2.0.0-1234");
entity2.setUpgradeType(UpgradeType.ROLLING);
entity2.setUpgradePackage("test-upgrade");
entity2.setDowngradeAllowed(true);
dao.create(entity2);
UpgradeEntity entity3=new UpgradeEntity();
entity3.setId(33L);
entity3.setClusterId(Long.valueOf(1));
entity3.setDirection(Direction.UPGRADE);
entity3.setRequestId(Long.valueOf(1));
entity3.setFromVersion("2.2.0.0-1234");
entity3.setToVersion("2.3.1.1-4567");
entity3.setUpgradeType(UpgradeType.ROLLING);
entity3.setUpgradePackage("test-upgrade");
entity3.setDowngradeAllowed(true);
dao.create(entity3);
UpgradeEntity lastUpgradeForCluster=dao.findLastUpgradeForCluster(1);
assertNotNull(lastUpgradeForCluster);
assertEquals(33L,(long)lastUpgradeForCluster.getId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testFindForCluster() throws Exception {
List items=dao.findUpgrades(clusterId.longValue());
assertEquals(1,items.size());
}
Class: org.apache.ambari.server.orm.dao.WidgetDAOTest InternalCallVerifier EqualityVerifier
@Test public void testFindBySectionName(){
createRecords();
Assert.assertEquals(0,widgetDAO.findBySectionName("non existing").size());
Assert.assertEquals(2,widgetDAO.findBySectionName("section0").size());
Assert.assertEquals(1,widgetDAO.findBySectionName("section1").size());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindByCluster(){
createRecords();
Assert.assertEquals(0,widgetDAO.findByCluster(99999).size());
Assert.assertEquals(3,widgetDAO.findByCluster(clusterId).size());
}
Class: org.apache.ambari.server.orm.dao.WidgetLayoutDAOTest InternalCallVerifier EqualityVerifier
@Test public void testFindByCluster(){
createRecords();
Assert.assertEquals(0,widgetLayoutDAO.findByCluster(99999).size());
Assert.assertEquals(2,widgetLayoutDAO.findByCluster(clusterId).size());
}
InternalCallVerifier EqualityVerifier
@Test public void testFindBySectionName(){
createRecords();
Assert.assertEquals(0,widgetLayoutDAO.findBySectionName("non existing").size());
List widgetLayoutEntityList1=widgetLayoutDAO.findBySectionName("section0");
List widgetLayoutEntityList2=widgetLayoutDAO.findBySectionName("section1");
Assert.assertEquals(1,widgetLayoutEntityList1.size());
Assert.assertEquals(1,widgetLayoutEntityList2.size());
Assert.assertEquals(3,widgetLayoutEntityList1.get(0).getListWidgetLayoutUserWidgetEntity().size());
}
Class: org.apache.ambari.server.orm.entities.BlueprintConfigEntityPKTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetType(){
BlueprintConfigEntityPK pk=new BlueprintConfigEntityPK();
pk.setType("foo");
assertEquals("foo",pk.getType());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testEquals(){
BlueprintConfigEntityPK pk=new BlueprintConfigEntityPK();
BlueprintConfigEntityPK pk2=new BlueprintConfigEntityPK();
pk.setBlueprintName("foo");
pk.setType("core-site");
pk2.setBlueprintName("foo");
pk2.setType("core-site");
assertEquals(pk,pk2);
assertEquals(pk2,pk);
pk.setBlueprintName("foo2");
assertFalse(pk.equals(pk2));
assertFalse(pk2.equals(pk));
pk2.setBlueprintName("foo2");
assertEquals(pk,pk2);
assertEquals(pk2,pk);
pk.setType("other-type");
assertFalse(pk.equals(pk2));
assertFalse(pk2.equals(pk));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
BlueprintConfigEntityPK pk=new BlueprintConfigEntityPK();
pk.setBlueprintName("foo");
assertEquals("foo",pk.getBlueprintName());
}
Class: org.apache.ambari.server.orm.entities.BlueprintConfigEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
BlueprintConfigEntity entity=new BlueprintConfigEntity();
entity.setBlueprintName("foo");
assertEquals("foo",entity.getBlueprintName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetConfigData(){
BlueprintConfigEntity entity=new BlueprintConfigEntity();
entity.setConfigData("foo");
assertEquals("foo",entity.getConfigData());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetType(){
BlueprintConfigEntity entity=new BlueprintConfigEntity();
entity.setType("foo");
assertEquals("foo",entity.getType());
}
InternalCallVerifier IdentityVerifier
@Test public void testSetGetBlueprintEntity(){
BlueprintEntity bp=new BlueprintEntity();
BlueprintConfigEntity entity=new BlueprintConfigEntity();
entity.setBlueprintEntity(bp);
assertSame(bp,entity.getBlueprintEntity());
}
Class: org.apache.ambari.server.orm.entities.BlueprintEntityTest InternalCallVerifier IdentityVerifier
@Test public void testSetGetHostGroups(){
BlueprintEntity entity=new BlueprintEntity();
Collection hostGroups=Collections.emptyList();
entity.setHostGroups(hostGroups);
assertSame(hostGroups,entity.getHostGroups());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetStack(){
BlueprintEntity entity=new BlueprintEntity();
entity.setStack(stackEntity);
assertEquals(stackEntity,entity.getStack());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
BlueprintEntity entity=new BlueprintEntity();
entity.setBlueprintName("foo");
assertEquals("foo",entity.getBlueprintName());
}
InternalCallVerifier IdentityVerifier
@Test public void testSetGetConfigurations(){
BlueprintEntity entity=new BlueprintEntity();
Collection configurations=Collections.emptyList();
entity.setConfigurations(configurations);
assertSame(configurations,entity.getConfigurations());
}
Class: org.apache.ambari.server.orm.entities.HostEntityTest InternalCallVerifier BooleanVerifier
@Test public void testRemoveHostComponentStateEntity() throws Exception {
HostEntity hostEntity=new HostEntity();
HostComponentStateEntity stateEntity=new HostComponentStateEntity();
hostEntity.setHostComponentStateEntities(new HashSet());
Collection stateEntities=hostEntity.getHostComponentStateEntities();
assertTrue(stateEntities.isEmpty());
hostEntity.addHostComponentStateEntity(stateEntity);
stateEntities=hostEntity.getHostComponentStateEntities();
assertTrue(stateEntities.contains(stateEntity));
hostEntity.removeHostComponentStateEntity(stateEntity);
stateEntities=hostEntity.getHostComponentStateEntities();
assertFalse(stateEntities.contains(stateEntity));
}
InternalCallVerifier BooleanVerifier
@Test public void testRemoveHostComponentDesiredStateEntity() throws Exception {
HostEntity hostEntity=new HostEntity();
HostComponentDesiredStateEntity stateEntity=new HostComponentDesiredStateEntity();
hostEntity.setHostComponentDesiredStateEntities(new HashSet());
Collection stateEntities=hostEntity.getHostComponentDesiredStateEntities();
assertTrue(stateEntities.isEmpty());
hostEntity.addHostComponentDesiredStateEntity(stateEntity);
stateEntities=hostEntity.getHostComponentDesiredStateEntities();
assertTrue(stateEntities.contains(stateEntity));
hostEntity.removeHostComponentDesiredStateEntity(stateEntity);
stateEntities=hostEntity.getHostComponentDesiredStateEntities();
assertFalse(stateEntities.contains(stateEntity));
}
InternalCallVerifier BooleanVerifier
@Test public void testAddHostComponentStateEntity() throws Exception {
HostEntity hostEntity=new HostEntity();
HostComponentStateEntity stateEntity=new HostComponentStateEntity();
hostEntity.setHostComponentStateEntities(new HashSet());
Collection stateEntities=hostEntity.getHostComponentStateEntities();
assertTrue(stateEntities.isEmpty());
hostEntity.addHostComponentStateEntity(stateEntity);
stateEntities=hostEntity.getHostComponentStateEntities();
assertTrue(stateEntities.contains(stateEntity));
}
UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testGetHostComponentStateEntities() throws Exception {
HostEntity hostEntity=new HostEntity();
HostComponentStateEntity stateEntity=new HostComponentStateEntity();
hostEntity.setHostComponentStateEntities(new HashSet());
Collection stateEntities=hostEntity.getHostComponentStateEntities();
assertTrue(stateEntities.isEmpty());
try {
stateEntities.add(stateEntity);
fail("Expected UnsupportedOperationException");
}
catch ( UnsupportedOperationException e) {
}
}
UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testGetHostComponentDesiredStateEntities() throws Exception {
HostEntity hostEntity=new HostEntity();
HostComponentDesiredStateEntity stateEntity=new HostComponentDesiredStateEntity();
hostEntity.setHostComponentDesiredStateEntities(new HashSet());
Collection stateEntities=hostEntity.getHostComponentDesiredStateEntities();
assertTrue(stateEntities.isEmpty());
try {
stateEntities.add(stateEntity);
fail("Expected UnsupportedOperationException");
}
catch ( UnsupportedOperationException e) {
}
}
InternalCallVerifier BooleanVerifier
@Test public void testAddHostComponentDesiredStateEntity() throws Exception {
HostEntity hostEntity=new HostEntity();
HostComponentDesiredStateEntity stateEntity=new HostComponentDesiredStateEntity();
hostEntity.setHostComponentDesiredStateEntities(new HashSet());
Collection stateEntities=hostEntity.getHostComponentDesiredStateEntities();
assertTrue(stateEntities.isEmpty());
hostEntity.addHostComponentDesiredStateEntity(stateEntity);
stateEntities=hostEntity.getHostComponentDesiredStateEntities();
assertTrue(stateEntities.contains(stateEntity));
}
Class: org.apache.ambari.server.orm.entities.HostGroupComponentEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
HostGroupComponentEntity entity=new HostGroupComponentEntity();
entity.setBlueprintName("foo");
assertEquals("foo",entity.getBlueprintName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetProvisionAction(){
HostGroupComponentEntity entity=new HostGroupComponentEntity();
entity.setProvisionAction("INSTALL_ONLY");
assertEquals("INSTALL_ONLY",entity.getProvisionAction());
}
InternalCallVerifier IdentityVerifier
@Test public void testSetGetHostGroupEntity(){
HostGroupComponentEntity entity=new HostGroupComponentEntity();
HostGroupEntity hg=new HostGroupEntity();
entity.setHostGroupEntity(hg);
assertSame(hg,entity.getHostGroupEntity());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetName(){
HostGroupComponentEntity entity=new HostGroupComponentEntity();
entity.setName("foo");
assertEquals("foo",entity.getName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetHostGroupName(){
HostGroupComponentEntity entity=new HostGroupComponentEntity();
entity.setHostGroupName("foo");
assertEquals("foo",entity.getHostGroupName());
}
Class: org.apache.ambari.server.orm.entities.HostGroupConfigEntityPKTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetHostGroupName(){
HostGroupConfigEntityPK pk=new HostGroupConfigEntityPK();
pk.setHostGroupName("foo");
assertEquals("foo",pk.getHostGroupName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetType(){
HostGroupConfigEntityPK pk=new HostGroupConfigEntityPK();
pk.setType("testType");
assertEquals("testType",pk.getType());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testEquals(){
HostGroupConfigEntityPK pk1=new HostGroupConfigEntityPK();
HostGroupConfigEntityPK pk2=new HostGroupConfigEntityPK();
pk1.setType("foo");
pk2.setType("foo");
pk1.setBlueprintName("bp");
pk2.setBlueprintName("bp");
pk1.setHostGroupName("hg");
pk2.setHostGroupName("hg");
assertEquals(pk1,pk2);
pk1.setType("something_else");
assertFalse(pk1.equals(pk2));
pk2.setType("something_else");
assertEquals(pk1,pk2);
pk1.setType("other_type");
assertFalse(pk1.equals(pk2));
pk2.setType("other_type");
assertEquals(pk1,pk2);
pk1.setHostGroupName("hg2");
assertFalse(pk1.equals(pk2));
}
InternalCallVerifier EqualityVerifier
@Test public void testHashcode(){
HostGroupConfigEntityPK pk1=new HostGroupConfigEntityPK();
HostGroupConfigEntityPK pk2=new HostGroupConfigEntityPK();
pk1.setType("foo");
pk2.setType("foo");
pk1.setBlueprintName("bp");
pk2.setBlueprintName("bp");
pk1.setHostGroupName("hg");
pk2.setHostGroupName("hg");
assertEquals(pk1.hashCode(),pk2.hashCode());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
HostGroupConfigEntityPK pk=new HostGroupConfigEntityPK();
pk.setBlueprintName("foo");
assertEquals("foo",pk.getBlueprintName());
}
Class: org.apache.ambari.server.orm.entities.HostGroupConfigEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetType(){
HostGroupConfigEntity entity=new HostGroupConfigEntity();
entity.setType("testType");
assertEquals("testType",entity.getType());
}
InternalCallVerifier IdentityVerifier
@Test public void testSetGetHostGroupEntity(){
HostGroupEntity group=new HostGroupEntity();
HostGroupConfigEntity entity=new HostGroupConfigEntity();
entity.setHostGroupEntity(group);
assertSame(group,entity.getHostGroupEntity());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetConfigData(){
HostGroupConfigEntity entity=new HostGroupConfigEntity();
String configData="{ \"prop_name\" : \"value\" }";
entity.setConfigData(configData);
assertEquals(configData,entity.getConfigData());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetHostGroupName(){
HostGroupConfigEntity entity=new HostGroupConfigEntity();
entity.setHostGroupName("foo");
assertEquals("foo",entity.getHostGroupName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
HostGroupConfigEntity entity=new HostGroupConfigEntity();
entity.setBlueprintName("foo");
assertEquals("foo",entity.getBlueprintName());
}
Class: org.apache.ambari.server.orm.entities.HostGroupEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetBlueprintName(){
HostGroupEntity entity=new HostGroupEntity();
entity.setBlueprintName("foo");
assertEquals("foo",entity.getBlueprintName());
}
InternalCallVerifier IdentityVerifier
@Test public void testSetGetBlueprintEntity(){
HostGroupEntity entity=new HostGroupEntity();
BlueprintEntity bp=new BlueprintEntity();
entity.setBlueprintEntity(bp);
assertSame(bp,entity.getBlueprintEntity());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetCardinality(){
HostGroupEntity entity=new HostGroupEntity();
entity.setCardinality("foo");
assertEquals("foo",entity.getCardinality());
}
InternalCallVerifier IdentityVerifier
@Test public void testSetGetComponents(){
HostGroupEntity entity=new HostGroupEntity();
Collection components=Collections.emptyList();
entity.setComponents(components);
assertSame(components,entity.getComponents());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetName(){
HostGroupEntity entity=new HostGroupEntity();
entity.setName("foo");
assertEquals("foo",entity.getName());
}
Class: org.apache.ambari.server.orm.entities.LdapSyncEventEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetMembershipsCreated() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setMembershipsCreated(90);
Assert.assertEquals(Integer.valueOf(90),event.getMembershipsCreated());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetUsersUpdated() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setUsersUpdated(97);
Assert.assertEquals(Integer.valueOf(97),event.getUsersUpdated());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetGroupsCreated() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setGroupsCreated(94);
Assert.assertEquals(Integer.valueOf(94),event.getGroupsCreated());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetSpecs() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
LdapSyncSpecEntity spec=new LdapSyncSpecEntity(LdapSyncSpecEntity.PrincipalType.GROUPS,LdapSyncSpecEntity.SyncType.ALL,Collections.emptyList());
event.setSpecs(Collections.singletonList(spec));
List specs=event.getSpecs();
Assert.assertEquals(1,specs.size());
Assert.assertEquals(spec,specs.get(0));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetStatusDetail() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setStatusDetail("some detail");
Assert.assertEquals("some detail",event.getStatusDetail());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetUsersRemoved() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setUsersRemoved(96);
Assert.assertEquals(Integer.valueOf(96),event.getUsersRemoved());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetMembershipsUpdated() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setMembershipsRemoved(99);
Assert.assertEquals(Integer.valueOf(99),event.getMembershipsRemoved());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetGroupsRemoved() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setGroupsRemoved(92);
Assert.assertEquals(Integer.valueOf(92),event.getGroupsRemoved());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetUsersCreated() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setUsersCreated(98);
Assert.assertEquals(Integer.valueOf(98),event.getUsersCreated());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetGroupsUpdated() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setGroupsUpdated(93);
Assert.assertEquals(Integer.valueOf(93),event.getGroupsUpdated());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetEndTime() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setEndTime(90009000L);
Assert.assertEquals(90009000L,event.getEndTime());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetStartTime() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
event.setStartTime(10001000L);
Assert.assertEquals(10001000L,event.getStartTime());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetStatus() throws Exception {
LdapSyncEventEntity event=new LdapSyncEventEntity(1L);
Assert.assertEquals(LdapSyncEventEntity.Status.PENDING,event.getStatus());
event.setStatus(LdapSyncEventEntity.Status.RUNNING);
Assert.assertEquals(LdapSyncEventEntity.Status.RUNNING,event.getStatus());
event.setStatus(LdapSyncEventEntity.Status.COMPLETE);
Assert.assertEquals(LdapSyncEventEntity.Status.COMPLETE,event.getStatus());
event.setStatus(LdapSyncEventEntity.Status.ERROR);
Assert.assertEquals(LdapSyncEventEntity.Status.ERROR,event.getStatus());
event.setStatus(LdapSyncEventEntity.Status.PENDING);
Assert.assertEquals(LdapSyncEventEntity.Status.PENDING,event.getStatus());
}
Class: org.apache.ambari.server.orm.entities.PrincipalEntityTest InternalCallVerifier EqualityVerifier
@Test public void testRemovePrivilege() throws Exception {
Set privileges=new HashSet();
PrivilegeEntity privilegeEntity1=new PrivilegeEntity();
privilegeEntity1.setId(1);
privileges.add(privilegeEntity1);
PrivilegeEntity privilegeEntity2=new PrivilegeEntity();
privilegeEntity2.setId(2);
privileges.add(privilegeEntity2);
PrincipalEntity entity=new PrincipalEntity();
entity.setPrivileges(privileges);
entity.removePrivilege(privilegeEntity2);
privileges=entity.getPrivileges();
Assert.assertEquals(1,privileges.size());
privileges.contains(privilegeEntity1);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetId() throws Exception {
PrincipalEntity entity=new PrincipalEntity();
entity.setId(1L);
Assert.assertEquals(1L,(long)entity.getId());
entity.setId(99L);
Assert.assertEquals(99L,(long)entity.getId());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetPrincipalType() throws Exception {
PrincipalEntity entity=new PrincipalEntity();
PrincipalTypeEntity typeEntity=new PrincipalTypeEntity();
entity.setPrincipalType(typeEntity);
Assert.assertEquals(typeEntity,entity.getPrincipalType());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetPrivileges() throws Exception {
Set privileges=new HashSet();
PrivilegeEntity privilegeEntity=new PrivilegeEntity();
privilegeEntity.setId(1);
privileges.add(privilegeEntity);
privilegeEntity=new PrivilegeEntity();
privilegeEntity.setId(2);
privileges.add(privilegeEntity);
PrincipalEntity entity=new PrincipalEntity();
entity.setPrivileges(privileges);
Assert.assertEquals(privileges,entity.getPrivileges());
}
Class: org.apache.ambari.server.orm.entities.PrincipalTypeEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetId() throws Exception {
PrincipalTypeEntity principalTypeEntity=new PrincipalTypeEntity();
principalTypeEntity.setId(1);
Assert.assertEquals(1L,(long)principalTypeEntity.getId());
principalTypeEntity.setId(99);
Assert.assertEquals(99L,(long)principalTypeEntity.getId());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetName() throws Exception {
PrincipalTypeEntity principalTypeEntity=new PrincipalTypeEntity();
principalTypeEntity.setName("foo");
Assert.assertEquals("foo",principalTypeEntity.getName());
principalTypeEntity.setName("bar");
Assert.assertEquals("bar",principalTypeEntity.getName());
}
Class: org.apache.ambari.server.orm.entities.ResourceEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetId() throws Exception {
ResourceEntity entity=new ResourceEntity();
entity.setId(1L);
Assert.assertEquals(1L,(long)entity.getId());
entity.setId(99L);
Assert.assertEquals(99L,(long)entity.getId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetGetPrivileges() throws Exception {
ResourceEntity entity=new ResourceEntity();
PrivilegeEntity privilegeEntity=new PrivilegeEntity();
Collection privileges=Collections.singleton(privilegeEntity);
Assert.assertNull(entity.getResourceType());
entity.setPrivileges(privileges);
Assert.assertEquals(privileges,entity.getPrivileges());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetResourceType() throws Exception {
ResourceEntity entity=new ResourceEntity();
ResourceTypeEntity typeEntity=new ResourceTypeEntity();
entity.setResourceType(typeEntity);
Assert.assertEquals(typeEntity,entity.getResourceType());
}
Class: org.apache.ambari.server.orm.entities.ResourceTypeEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetId() throws Exception {
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(1);
Assert.assertEquals(1L,(long)resourceTypeEntity.getId());
resourceTypeEntity.setId(99);
Assert.assertEquals(99L,(long)resourceTypeEntity.getId());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetName() throws Exception {
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setName("foo");
Assert.assertEquals("foo",resourceTypeEntity.getName());
resourceTypeEntity.setName("bar");
Assert.assertEquals("bar",resourceTypeEntity.getName());
}
Class: org.apache.ambari.server.orm.entities.ServiceConfigEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSettersGetters(){
ServiceConfigEntity entity=new ServiceConfigEntity();
entity.setServiceName("foo");
entity.setUser("bar");
entity.setNote("note");
entity.setVersion(1L);
entity.setServiceConfigId(1L);
entity.setClusterId(1L);
entity.setCreateTimestamp(1111L);
assertEquals("foo",entity.getServiceName());
assertEquals("bar",entity.getUser());
assertEquals("note",entity.getNote());
assertEquals(Long.valueOf(1),entity.getVersion());
assertEquals(Long.valueOf(1),entity.getServiceConfigId());
assertEquals(Long.valueOf(1),entity.getClusterId());
assertEquals(Long.valueOf(1111),entity.getCreateTimestamp());
}
Class: org.apache.ambari.server.orm.entities.SettingEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetName(){
String name="motd";
SettingEntity entity=new SettingEntity();
entity.setName(name);
assertEquals(name,entity.getName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetUpdatedTimeStamp(){
long updateTimeStamp=1234567890;
SettingEntity entity=new SettingEntity();
entity.setUpdateTimestamp(updateTimeStamp);
assertEquals(updateTimeStamp,entity.getUpdateTimestamp());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetSettingType(){
String settingType="ambari-server";
SettingEntity entity=new SettingEntity();
entity.setSettingType(settingType);
assertEquals(settingType,entity.getSettingType());
}
InternalCallVerifier EqualityVerifier
@Test public void testEquals(){
SettingEntity entity=new SettingEntity();
entity.setId(1);
entity.setName("motd");
entity.setContent("{tag:random-tag, text:random-text}");
entity.setSettingType("ambari-server");
entity.setUpdatedBy("ambari");
entity.setUpdateTimestamp(1234567890);
SettingEntity newEntity=entity.clone();
assertEquals(entity,newEntity);
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetId(){
long id=1000;
SettingEntity entity=new SettingEntity();
entity.setId(id);
assertEquals(id,entity.getId());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetUpdatedBy(){
String updatedBy="ambari";
SettingEntity entity=new SettingEntity();
entity.setUpdatedBy(updatedBy);
assertEquals(updatedBy,entity.getUpdatedBy());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetContent(){
String content="{tag:random-tag, text:random-text}";
SettingEntity entity=new SettingEntity();
entity.setContent(content);
assertEquals(content,entity.getContent());
}
Class: org.apache.ambari.server.orm.entities.StageEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetRequestContext(){
StageEntity entity=new StageEntity();
entity.setRequestContext("testSetGetRequestContext");
assertEquals("testSetGetRequestContext",entity.getRequestContext());
}
Class: org.apache.ambari.server.orm.entities.ViewEntityEntityTest InternalCallVerifier EqualityVerifier
@Test public void testSetGetViewInstanceName() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setViewInstanceName("foo");
Assert.assertEquals("foo",viewEntityEntity.getViewInstanceName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetClassName() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setClassName("TestClass");
Assert.assertEquals("TestClass",viewEntityEntity.getClassName());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetIdProperty() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setIdProperty("id");
Assert.assertEquals("id",viewEntityEntity.getIdProperty());
}
InternalCallVerifier BooleanVerifier
@Test public void testEquals() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setId(99L);
viewEntityEntity.setClassName("TestClass");
viewEntityEntity.setIdProperty("id");
viewEntityEntity.setViewName("foo");
viewEntityEntity.setViewInstanceName("bar");
ViewEntityEntity viewEntityEntity2=new ViewEntityEntity();
viewEntityEntity2.setId(99L);
viewEntityEntity2.setClassName("TestClass");
viewEntityEntity2.setIdProperty("id");
viewEntityEntity2.setViewName("foo");
viewEntityEntity2.setViewInstanceName("bar");
Assert.assertTrue(viewEntityEntity.equals(viewEntityEntity2));
viewEntityEntity2.setId(100L);
Assert.assertFalse(viewEntityEntity.equals(viewEntityEntity2));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetViewName() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setViewName("foo");
Assert.assertEquals("foo",viewEntityEntity.getViewName());
}
InternalCallVerifier EqualityVerifier
@Test public void testHashCode() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setId(99L);
viewEntityEntity.setClassName("TestClass");
viewEntityEntity.setIdProperty("id");
viewEntityEntity.setViewName("foo");
viewEntityEntity.setViewInstanceName("bar");
ViewEntityEntity viewEntityEntity2=new ViewEntityEntity();
viewEntityEntity2.setId(99L);
viewEntityEntity2.setClassName("TestClass");
viewEntityEntity2.setIdProperty("id");
viewEntityEntity2.setViewName("foo");
viewEntityEntity2.setViewInstanceName("bar");
Assert.assertEquals(viewEntityEntity.hashCode(),viewEntityEntity2.hashCode());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetViewInstance() throws Exception {
ViewInstanceEntity viewInstanceEntity=ViewInstanceEntityTest.getViewInstanceEntity();
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setViewInstance(viewInstanceEntity);
Assert.assertEquals(viewInstanceEntity,viewEntityEntity.getViewInstance());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetId() throws Exception {
ViewEntityEntity viewEntityEntity=new ViewEntityEntity();
viewEntityEntity.setId(99L);
Assert.assertEquals(99L,(long)viewEntityEntity.getId());
}
Class: org.apache.ambari.server.orm.entities.ViewEntityTest InternalCallVerifier EqualityVerifier
@Test public void testGetSetStatus() throws Exception {
ViewEntity viewDefinition=getViewEntity();
viewDefinition.setStatus(ViewDefinition.ViewStatus.PENDING);
Assert.assertEquals(ViewDefinition.ViewStatus.PENDING,viewDefinition.getStatus());
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYING);
Assert.assertEquals(ViewDefinition.ViewStatus.DEPLOYING,viewDefinition.getStatus());
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED);
Assert.assertEquals(ViewDefinition.ViewStatus.DEPLOYED,viewDefinition.getStatus());
viewDefinition.setStatus(ViewDefinition.ViewStatus.ERROR);
Assert.assertEquals(ViewDefinition.ViewStatus.ERROR,viewDefinition.getStatus());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSetGetConfiguration() throws Exception {
ViewConfig viewConfig=ViewConfigTest.getConfig();
ViewEntity viewDefinition=getViewEntity(viewConfig);
Assert.assertEquals(viewConfig,viewDefinition.getConfiguration());
ViewConfig newViewConfig=ViewConfigTest.getConfig(with_ambari_versions);
viewDefinition.setConfiguration(newViewConfig);
Assert.assertEquals(newViewConfig,viewDefinition.getConfiguration());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAddGetInstanceDefinition() throws Exception {
ViewEntity viewDefinition=getViewEntity();
ViewInstanceEntity definition=createNiceMock(ViewInstanceEntity.class);
expect(definition.getName()).andReturn("instance1").anyTimes();
replay(definition);
viewDefinition.addInstanceDefinition(definition);
Assert.assertEquals(definition,viewDefinition.getInstanceDefinition("instance1"));
Collection definitions=viewDefinition.getInstances();
Assert.assertEquals(1,definitions.size());
Assert.assertTrue(definitions.contains(definition));
verify(definition);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetAmbariProperty() throws Exception {
ViewConfig viewConfig=ViewConfigTest.getConfig();
ViewEntity viewDefinition=getViewEntity(viewConfig);
Assert.assertEquals("v1",viewDefinition.getAmbariProperty("p1"));
Assert.assertEquals("v2",viewDefinition.getAmbariProperty("p2"));
Assert.assertEquals("v3",viewDefinition.getAmbariProperty("p3"));
}
InternalCallVerifier BooleanVerifier
@Test public void testSetIsSystem() throws Exception {
ViewEntity viewDefinition=getViewEntity();
viewDefinition.setSystem(false);
Assert.assertFalse(viewDefinition.isSystem());
viewDefinition.setSystem(true);
Assert.assertTrue(viewDefinition.isSystem());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetIcon64() throws Exception {
ViewEntity viewDefinition=getViewEntity();
Assert.assertEquals("/this/is/the/icon/url/icon64.png",viewDefinition.getIcon64());
viewDefinition.setIcon64("/a/different/icon.png");
Assert.assertEquals("/a/different/icon.png",viewDefinition.getIcon64());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testIsClusterConfigurable() throws Exception {
ViewConfig viewConfig=ViewConfigTest.getConfig();
ViewEntity viewDefinition=getViewEntity(viewConfig);
Assert.assertEquals(viewConfig,viewDefinition.getConfiguration());
ViewConfig newViewConfig=ViewConfigTest.getConfig();
viewDefinition.setConfiguration(newViewConfig);
Assert.assertTrue(viewDefinition.isClusterConfigurable());
newViewConfig=ViewConfigTest.getConfig(with_ambari_versions);
viewDefinition.setConfiguration(newViewConfig);
Assert.assertFalse(viewDefinition.isClusterConfigurable());
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetResourceConfiguration() throws Exception {
ViewEntity viewDefinition=getViewEntity();
ResourceConfig config=ResourceConfigTest.getResourceConfigs().get(0);
Resource.Type type1=new Resource.Type("myType");
viewDefinition.addResourceConfiguration(type1,config);
Assert.assertEquals(config,viewDefinition.getResourceConfigurations().get(type1));
Resource.Type type2=new Resource.Type("myType2");
viewDefinition.addResourceConfiguration(type2,config);
Assert.assertEquals(config,viewDefinition.getResourceConfigurations().get(type2));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAddGetResourceProvider() throws Exception {
ViewEntity viewDefinition=getViewEntity();
ResourceProvider provider1=createNiceMock(ResourceProvider.class);
Resource.Type type1=new Resource.Type("myType1");
viewDefinition.addResourceProvider(type1,provider1);
Assert.assertEquals(provider1,viewDefinition.getResourceProvider(type1));
ResourceProvider provider2=createNiceMock(ResourceProvider.class);
Resource.Type type2=new Resource.Type("myType2");
viewDefinition.addResourceProvider(type2,provider2);
Assert.assertEquals(provider2,viewDefinition.getResourceProvider(type2));
Set types=viewDefinition.getViewResourceTypes();
Assert.assertEquals(2,types.size());
Assert.assertTrue(types.contains(type1));
Assert.assertTrue(types.contains(type2));
}
InternalCallVerifier BooleanVerifier
@Test public void testisDeployed() throws Exception {
ViewEntity viewDefinition=getViewEntity();
viewDefinition.setStatus(ViewDefinition.ViewStatus.PENDING);
Assert.assertFalse(viewDefinition.isDeployed());
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYING);
Assert.assertFalse(viewDefinition.isDeployed());
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED);
Assert.assertTrue(viewDefinition.isDeployed());
viewDefinition.setStatus(ViewDefinition.ViewStatus.ERROR);
Assert.assertFalse(viewDefinition.isDeployed());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetSetStatusDetail() throws Exception {
ViewEntity viewDefinition=getViewEntity();
viewDefinition.setStatusDetail("status detail");
Assert.assertEquals("status detail",viewDefinition.getStatusDetail());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetIcon() throws Exception {
ViewEntity viewDefinition=getViewEntity();
Assert.assertEquals("/this/is/the/icon/url/icon.png",viewDefinition.getIcon());
viewDefinition.setIcon("/a/different/icon.png");
Assert.assertEquals("/a/different/icon.png",viewDefinition.getIcon());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetSetValidator() throws Exception {
ViewEntity viewDefinition=getViewEntity();
Validator validator=new TestValidator();
viewDefinition.setValidator(validator);
Assert.assertEquals(validator,viewDefinition.getValidator());
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetResourceDefinition() throws Exception {
ViewEntity viewDefinition=getViewEntity();
ViewSubResourceDefinition definition=createNiceMock(ViewSubResourceDefinition.class);
Resource.Type type=new Resource.Type("myType");
expect(definition.getType()).andReturn(type);
replay(definition);
viewDefinition.addResourceDefinition(definition);
Assert.assertEquals(definition,viewDefinition.getResourceDefinition(type));
verify(definition);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAmbariConfiguration() throws Exception {
ViewEntity viewDefinition=getViewEntity();
Configuration configuration=viewDefinition.getAmbariConfiguration();
Assert.assertEquals("v1",configuration.getProperty("p1"));
Assert.assertEquals("v2",configuration.getProperty("p2"));
Assert.assertEquals("v3",configuration.getProperty("p3"));
}
Class: org.apache.ambari.server.orm.entities.ViewInstanceEntityTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetIcon64() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs(xml_with_instance_label).get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
Assert.assertEquals("/this/is/the/icon/url/instance_1_icon64.png",viewInstanceDefinition.getIcon64());
viewInstanceDefinition.setIcon64("/a/different/icon.png");
Assert.assertEquals("/a/different/icon.png",viewInstanceDefinition.getIcon64());
instanceConfig=InstanceConfigTest.getInstanceConfigs(xml_with_instance_label).get(1);
viewDefinition=ViewEntityTest.getViewEntity();
viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
Assert.assertEquals("/this/is/the/icon/url/icon64.png",viewInstanceDefinition.getIcon64());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testAlterNames() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs(xml_with_instance_label).get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
Assert.assertTrue(viewInstanceDefinition.alterNames());
viewInstanceDefinition.setAlterNames(false);
Assert.assertFalse(viewInstanceDefinition.alterNames());
viewInstanceDefinition.setAlterNames(true);
Assert.assertTrue(viewInstanceDefinition.alterNames());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testInstanceData() throws Exception {
TestSecurityHelper securityHelper=new TestSecurityHelper("user1");
ViewInstanceEntity viewInstanceDefinition=getViewInstanceEntity(securityHelper);
viewInstanceDefinition.putInstanceData("key1","foo");
ViewInstanceDataEntity dataEntity=viewInstanceDefinition.getInstanceData("key1");
Assert.assertNotNull(dataEntity);
Assert.assertEquals("foo",dataEntity.getValue());
Assert.assertEquals("user1",dataEntity.getUser());
viewInstanceDefinition.putInstanceData("key2","bar");
viewInstanceDefinition.putInstanceData("key3","baz");
viewInstanceDefinition.putInstanceData("key4","monkey");
viewInstanceDefinition.putInstanceData("key5","runner");
Map dataMap=viewInstanceDefinition.getInstanceDataMap();
Assert.assertEquals(5,dataMap.size());
Assert.assertEquals("foo",dataMap.get("key1"));
Assert.assertEquals("bar",dataMap.get("key2"));
Assert.assertEquals("baz",dataMap.get("key3"));
Assert.assertEquals("monkey",dataMap.get("key4"));
Assert.assertEquals("runner",dataMap.get("key5"));
viewInstanceDefinition.removeInstanceData("key3");
dataMap=viewInstanceDefinition.getInstanceDataMap();
Assert.assertEquals(4,dataMap.size());
Assert.assertFalse(dataMap.containsKey("key3"));
securityHelper.setUser("user2");
dataMap=viewInstanceDefinition.getInstanceDataMap();
Assert.assertTrue(dataMap.isEmpty());
viewInstanceDefinition.putInstanceData("key1","aaa");
viewInstanceDefinition.putInstanceData("key2","bbb");
viewInstanceDefinition.putInstanceData("key3","ccc");
dataMap=viewInstanceDefinition.getInstanceDataMap();
Assert.assertEquals(3,dataMap.size());
Assert.assertEquals("aaa",dataMap.get("key1"));
Assert.assertEquals("bbb",dataMap.get("key2"));
Assert.assertEquals("ccc",dataMap.get("key3"));
securityHelper.setUser("user1");
dataMap=viewInstanceDefinition.getInstanceDataMap();
Assert.assertEquals(4,dataMap.size());
Assert.assertEquals("foo",dataMap.get("key1"));
Assert.assertEquals("bar",dataMap.get("key2"));
Assert.assertNull(dataMap.get("key3"));
Assert.assertEquals("monkey",dataMap.get("key4"));
Assert.assertEquals("runner",dataMap.get("key5"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetValidationResult() throws Exception {
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
ViewConfig config=ViewConfigTest.getConfig(xml_valid_instance);
ViewEntity viewEntity=ViewRegistryTest.getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewInstanceEntity viewInstanceEntity=ViewRegistryTest.getViewInstanceEntity(viewEntity,config.getInstances().get(0));
ViewEntityTest.TestValidator validator=new ViewEntityTest.TestValidator();
validator.result=new ValidationResultImpl(true,"detail");
viewEntity.setValidator(validator);
InstanceValidationResultImpl result=viewInstanceEntity.getValidationResult(viewEntity,Validator.ValidationContext.PRE_CREATE);
Map propertyResults=result.getPropertyResults();
junit.framework.Assert.assertEquals(2,propertyResults.size());
junit.framework.Assert.assertTrue(propertyResults.containsKey("p1"));
junit.framework.Assert.assertTrue(propertyResults.containsKey("p2"));
junit.framework.Assert.assertTrue(propertyResults.get("p1").isValid());
junit.framework.Assert.assertTrue(propertyResults.get("p2").isValid());
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetService() throws Exception {
ViewInstanceEntity viewInstanceDefinition=getViewInstanceEntity();
Object service=new Object();
viewInstanceDefinition.addService("resources",service);
Object service2=new Object();
viewInstanceDefinition.addService("subresources",service2);
Assert.assertEquals(service,viewInstanceDefinition.getService("resources"));
Assert.assertEquals(service2,viewInstanceDefinition.getService("subresources"));
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetResourceProvider() throws Exception {
ViewInstanceEntity viewInstanceDefinition=getViewInstanceEntity();
ResourceProvider provider=createNiceMock(ResourceProvider.class);
Resource.Type type=new Resource.Type("MY_VIEW{1.0.0}/myType");
viewInstanceDefinition.addResourceProvider(type,provider);
Assert.assertEquals(provider,viewInstanceDefinition.getResourceProvider(type));
Assert.assertEquals(provider,viewInstanceDefinition.getResourceProvider("myType"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetId() throws Exception {
ViewInstanceEntity viewInstanceDefinition=getViewInstanceEntity();
Assert.assertNull(viewInstanceDefinition.getViewInstanceId());
viewInstanceDefinition.setViewInstanceId(99L);
Assert.assertEquals(99L,(long)viewInstanceDefinition.getViewInstanceId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetIcon() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs(xml_with_instance_label).get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
Assert.assertEquals("/this/is/the/icon/url/instance_1_icon.png",viewInstanceDefinition.getIcon());
viewInstanceDefinition.setIcon("/a/different/icon.png");
Assert.assertEquals("/a/different/icon.png",viewInstanceDefinition.getIcon());
instanceConfig=InstanceConfigTest.getInstanceConfigs(xml_with_instance_label).get(1);
viewDefinition=ViewEntityTest.getViewEntity();
viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
Assert.assertEquals("/this/is/the/icon/url/icon.png",viewInstanceDefinition.getIcon());
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetProperty() throws Exception {
ViewInstanceEntity viewInstanceDefinition=getViewInstanceEntity();
viewInstanceDefinition.putProperty("p1","v1");
viewInstanceDefinition.putProperty("p2","v2");
viewInstanceDefinition.putProperty("p3","v3");
Map properties=viewInstanceDefinition.getPropertyMap();
Assert.assertEquals(3,properties.size());
Assert.assertEquals("v1",properties.get("p1"));
Assert.assertEquals("v2",properties.get("p2"));
Assert.assertEquals("v3",properties.get("p3"));
}
Class: org.apache.ambari.server.proxy.ProxyServiceTest InternalCallVerifier IdentityVerifier
@Test public void testProxyGetRequest() throws Exception {
ProxyService ps=new ProxyService();
URLStreamProvider streamProviderMock=PowerMock.createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnectionMock=createMock(HttpURLConnection.class);
URI uriMock=PowerMock.createMock(URI.class);
MultivaluedMap queryParams=new MultivaluedMapImpl();
MultivaluedMap headerParams=new MultivaluedMapImpl();
Map> headerParamsToForward=new HashMap>();
Response.ResponseBuilder responseBuilderMock=PowerMock.createMock(ResponseBuilderImpl.class);
Response responseMock=createMock(ResponseImpl.class);
headerParams.add("AmbariProxy-User-Remote","testuser");
headerParams.add("Content-Type","testtype");
List userRemoteParams=new LinkedList();
userRemoteParams.add("testuser");
headerParamsToForward.put("User-Remote",userRemoteParams);
InputStream is=new ByteArrayInputStream("test".getBytes());
PowerMock.mockStatic(Response.class);
expect(getHttpHeaders().getRequestHeaders()).andReturn(headerParams);
expect(getHttpHeaders().getRequestHeader("AmbariProxy-User-Remote")).andReturn(userRemoteParams);
expect(getUriInfo().getRequestUri()).andReturn(uriMock);
expect(getUriInfo().getQueryParameters()).andReturn(queryParams);
expect(uriMock.getQuery()).andReturn("url=testurl");
expect(streamProviderMock.processURL("testurl","GET",(InputStream)null,headerParamsToForward)).andReturn(urlConnectionMock);
expect(urlConnectionMock.getResponseCode()).andReturn(200);
expect(urlConnectionMock.getContentType()).andReturn("text/plain");
expect(urlConnectionMock.getInputStream()).andReturn(is);
PowerMock.expectNew(URLStreamProvider.class,20000,15000,null,null,null).andReturn(streamProviderMock);
expect(Response.status(200)).andReturn(responseBuilderMock);
expect(responseBuilderMock.entity(is)).andReturn(responseBuilderMock);
expect(responseBuilderMock.type("text/plain")).andReturn(responseBuilderMock);
expect(responseBuilderMock.build()).andReturn(responseMock);
PowerMock.replay(streamProviderMock,URLStreamProvider.class,Response.class,responseBuilderMock,uriMock,URI.class);
replay(getUriInfo(),urlConnectionMock,getHttpHeaders());
Response resultForGetRequest=ps.processGetRequestForwarding(getHttpHeaders(),getUriInfo());
assertSame(resultForGetRequest,responseMock);
}
InternalCallVerifier IdentityVerifier
@Test public void testProxyPutRequest() throws Exception {
ProxyService ps=new ProxyService();
URLStreamProvider streamProviderMock=PowerMock.createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnectionMock=createMock(HttpURLConnection.class);
URI uriMock=PowerMock.createMock(URI.class);
MultivaluedMap queryParams=new MultivaluedMapImpl();
MultivaluedMap headerParams=new MultivaluedMapImpl();
Map> headerParamsToForward=new HashMap>();
Response.ResponseBuilder responseBuilderMock=PowerMock.createMock(ResponseBuilderImpl.class);
Response responseMock=createMock(ResponseImpl.class);
headerParams.add("AmbariProxy-User-Remote","testuser");
headerParams.add("Content-Type","testtype");
List userRemoteParams=new LinkedList();
userRemoteParams.add("testuser");
headerParamsToForward.put("User-Remote",userRemoteParams);
InputStream is=new ByteArrayInputStream("test".getBytes());
PowerMock.mockStatic(Response.class);
expect(getHttpHeaders().getRequestHeaders()).andReturn(headerParams);
expect(getHttpHeaders().getRequestHeader("AmbariProxy-User-Remote")).andReturn(userRemoteParams);
expect(getUriInfo().getRequestUri()).andReturn(uriMock);
expect(getUriInfo().getQueryParameters()).andReturn(queryParams);
expect(uriMock.getQuery()).andReturn("url=testurl");
expect(getHttpHeaders().getMediaType()).andReturn(APPLICATION_FORM_URLENCODED_TYPE);
expect(streamProviderMock.processURL("testurl","PUT",is,headerParamsToForward)).andReturn(urlConnectionMock);
expect(urlConnectionMock.getResponseCode()).andReturn(200);
expect(urlConnectionMock.getContentType()).andReturn("text/plain");
expect(urlConnectionMock.getInputStream()).andReturn(is);
PowerMock.expectNew(URLStreamProvider.class,20000,15000,null,null,null).andReturn(streamProviderMock);
expect(Response.status(200)).andReturn(responseBuilderMock);
expect(responseBuilderMock.entity(is)).andReturn(responseBuilderMock);
expect(responseBuilderMock.type("text/plain")).andReturn(responseBuilderMock);
expect(responseBuilderMock.build()).andReturn(responseMock);
PowerMock.replay(streamProviderMock,URLStreamProvider.class,Response.class,responseBuilderMock,uriMock,URI.class);
replay(getUriInfo(),urlConnectionMock,getHttpHeaders());
Response resultForPutRequest=ps.processPutRequestForwarding(is,getHttpHeaders(),getUriInfo());
assertSame(resultForPutRequest,responseMock);
}
InternalCallVerifier IdentityVerifier
@Test public void testResponseWithError() throws Exception {
ProxyService ps=new ProxyService();
URLStreamProvider streamProviderMock=PowerMock.createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnectionMock=createMock(HttpURLConnection.class);
Response.ResponseBuilder responseBuilderMock=PowerMock.createMock(ResponseBuilderImpl.class);
URI uriMock=PowerMock.createMock(URI.class);
Response responseMock=createMock(ResponseImpl.class);
InputStream es=new ByteArrayInputStream("error".getBytes());
MultivaluedMap queryParams=new MultivaluedMapImpl();
MultivaluedMap headerParams=new MultivaluedMapImpl();
Map> headerParamsToForward=new HashMap>();
headerParams.add("AmbariProxy-User-Remote","testuser");
headerParams.add("Content-Type","testtype");
List userRemoteParams=new LinkedList();
userRemoteParams.add("testuser");
headerParamsToForward.put("User-Remote",userRemoteParams);
PowerMock.mockStatic(Response.class);
expect(getHttpHeaders().getRequestHeaders()).andReturn(headerParams);
expect(getHttpHeaders().getRequestHeader("AmbariProxy-User-Remote")).andReturn(userRemoteParams);
expect(getUriInfo().getRequestUri()).andReturn(uriMock);
expect(getUriInfo().getQueryParameters()).andReturn(queryParams);
expect(uriMock.getQuery()).andReturn("url=testurl");
expect(streamProviderMock.processURL("testurl","GET",(InputStream)null,headerParamsToForward)).andReturn(urlConnectionMock);
expect(urlConnectionMock.getResponseCode()).andReturn(400).times(2);
expect(urlConnectionMock.getContentType()).andReturn("text/plain");
expect(urlConnectionMock.getErrorStream()).andReturn(es);
expect(Response.status(400)).andReturn(responseBuilderMock);
expect(responseBuilderMock.entity(es)).andReturn(responseBuilderMock);
expect(responseBuilderMock.type("text/plain")).andReturn(responseBuilderMock);
expect(responseBuilderMock.build()).andReturn(responseMock);
PowerMock.expectNew(URLStreamProvider.class,20000,15000,null,null,null).andReturn(streamProviderMock);
PowerMock.replay(streamProviderMock,URLStreamProvider.class,uriMock,URI.class,Response.class,responseBuilderMock);
replay(getUriInfo(),urlConnectionMock,getHttpHeaders());
Response resultForErrorRequest=ps.processGetRequestForwarding(getHttpHeaders(),getUriInfo());
assertSame(resultForErrorRequest,responseMock);
}
InternalCallVerifier IdentityVerifier
@Test public void testProxyDeleteRequest() throws Exception {
ProxyService ps=new ProxyService();
URLStreamProvider streamProviderMock=PowerMock.createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnectionMock=createMock(HttpURLConnection.class);
URI uriMock=PowerMock.createMock(URI.class);
MultivaluedMap queryParams=new MultivaluedMapImpl();
MultivaluedMap headerParams=new MultivaluedMapImpl();
Map> headerParamsToForward=new HashMap>();
Response.ResponseBuilder responseBuilderMock=PowerMock.createMock(ResponseBuilderImpl.class);
Response responseMock=createMock(ResponseImpl.class);
headerParams.add("AmbariProxy-User-Remote","testuser");
headerParams.add("Content-Type","testtype");
List userRemoteParams=new LinkedList();
userRemoteParams.add("testuser");
headerParamsToForward.put("User-Remote",userRemoteParams);
InputStream is=new ByteArrayInputStream("test".getBytes());
PowerMock.mockStatic(Response.class);
expect(getHttpHeaders().getRequestHeaders()).andReturn(headerParams);
expect(getHttpHeaders().getRequestHeader("AmbariProxy-User-Remote")).andReturn(userRemoteParams);
expect(getUriInfo().getRequestUri()).andReturn(uriMock);
expect(getUriInfo().getQueryParameters()).andReturn(queryParams);
expect(uriMock.getQuery()).andReturn("url=testurl");
expect(streamProviderMock.processURL("testurl","DELETE",(InputStream)null,headerParamsToForward)).andReturn(urlConnectionMock);
expect(urlConnectionMock.getResponseCode()).andReturn(200);
expect(urlConnectionMock.getContentType()).andReturn("text/plain");
expect(urlConnectionMock.getInputStream()).andReturn(is);
PowerMock.expectNew(URLStreamProvider.class,20000,15000,null,null,null).andReturn(streamProviderMock);
expect(Response.status(200)).andReturn(responseBuilderMock);
expect(responseBuilderMock.entity(is)).andReturn(responseBuilderMock);
expect(responseBuilderMock.type("text/plain")).andReturn(responseBuilderMock);
expect(responseBuilderMock.build()).andReturn(responseMock);
PowerMock.replay(streamProviderMock,URLStreamProvider.class,Response.class,responseBuilderMock,uriMock,URI.class);
replay(getUriInfo(),urlConnectionMock,getHttpHeaders());
Response resultForDeleteRequest=ps.processDeleteRequestForwarding(getHttpHeaders(),getUriInfo());
assertSame(resultForDeleteRequest,responseMock);
}
InternalCallVerifier IdentityVerifier
@Test public void testProxyWithJSONResponse() throws Exception {
ProxyService ps=new ProxyService();
URLStreamProvider streamProviderMock=PowerMock.createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnectionMock=createMock(HttpURLConnection.class);
URI uriMock=PowerMock.createMock(URI.class);
MultivaluedMap queryParams=new MultivaluedMapImpl();
MultivaluedMap headerParams=new MultivaluedMapImpl();
Map> headerParamsToForward=new HashMap>();
Response.ResponseBuilder responseBuilderMock=PowerMock.createMock(ResponseBuilderImpl.class);
Response responseMock=createMock(ResponseImpl.class);
headerParams.add("AmbariProxy-User-Remote","testuser");
headerParams.add("Content-Type","testtype");
List userRemoteParams=new LinkedList();
userRemoteParams.add("testuser");
headerParamsToForward.put("User-Remote",userRemoteParams);
Map map=new Gson().fromJson(new InputStreamReader(new ByteArrayInputStream("{ \"test\":\"test\" }".getBytes())),Map.class);
PowerMock.mockStatic(Response.class);
expect(getHttpHeaders().getRequestHeaders()).andReturn(headerParams);
expect(getHttpHeaders().getRequestHeader("AmbariProxy-User-Remote")).andReturn(userRemoteParams);
expect(getUriInfo().getRequestUri()).andReturn(uriMock);
expect(getUriInfo().getQueryParameters()).andReturn(queryParams);
expect(uriMock.getQuery()).andReturn("url=testurl");
expect(streamProviderMock.processURL("testurl","GET",(InputStream)null,headerParamsToForward)).andReturn(urlConnectionMock);
expect(urlConnectionMock.getResponseCode()).andReturn(200);
expect(urlConnectionMock.getContentType()).andReturn("application/json");
expect(urlConnectionMock.getInputStream()).andReturn(new ByteArrayInputStream("{ \"test\":\"test\" }".getBytes()));
PowerMock.expectNew(URLStreamProvider.class,20000,15000,null,null,null).andReturn(streamProviderMock);
expect(Response.status(200)).andReturn(responseBuilderMock);
expect(responseBuilderMock.entity(map)).andReturn(responseBuilderMock);
expect(responseBuilderMock.type("application/json")).andReturn(responseBuilderMock);
expect(responseBuilderMock.build()).andReturn(responseMock);
PowerMock.replay(streamProviderMock,URLStreamProvider.class,Response.class,responseBuilderMock,uriMock,URI.class);
replay(getUriInfo(),urlConnectionMock,getHttpHeaders());
Response resultForGetRequest=ps.processGetRequestForwarding(getHttpHeaders(),getUriInfo());
assertSame(resultForGetRequest,responseMock);
}
InternalCallVerifier IdentityVerifier
@Test public void testProxyPostRequest() throws Exception {
ProxyService ps=new ProxyService();
URLStreamProvider streamProviderMock=PowerMock.createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnectionMock=createMock(HttpURLConnection.class);
URI uriMock=PowerMock.createMock(URI.class);
MultivaluedMap queryParams=new MultivaluedMapImpl();
MultivaluedMap headerParams=new MultivaluedMapImpl();
Map> headerParamsToForward=new HashMap>();
Response.ResponseBuilder responseBuilderMock=PowerMock.createMock(ResponseBuilderImpl.class);
Response responseMock=createMock(ResponseImpl.class);
headerParams.add("AmbariProxy-User-Remote","testuser");
headerParams.add("Content-Type","testtype");
List userRemoteParams=new LinkedList();
userRemoteParams.add("testuser");
headerParamsToForward.put("User-Remote",userRemoteParams);
InputStream is=new ByteArrayInputStream("test".getBytes());
PowerMock.mockStatic(Response.class);
expect(getHttpHeaders().getRequestHeaders()).andReturn(headerParams);
expect(getHttpHeaders().getRequestHeader("AmbariProxy-User-Remote")).andReturn(userRemoteParams);
expect(getUriInfo().getRequestUri()).andReturn(uriMock);
expect(getUriInfo().getQueryParameters()).andReturn(queryParams);
expect(uriMock.getQuery()).andReturn("url=testurl");
expect(getHttpHeaders().getMediaType()).andReturn(APPLICATION_FORM_URLENCODED_TYPE);
expect(streamProviderMock.processURL("testurl","POST",is,headerParamsToForward)).andReturn(urlConnectionMock);
expect(urlConnectionMock.getResponseCode()).andReturn(200);
expect(urlConnectionMock.getContentType()).andReturn("text/plain");
expect(urlConnectionMock.getInputStream()).andReturn(is);
PowerMock.expectNew(URLStreamProvider.class,20000,15000,null,null,null).andReturn(streamProviderMock);
expect(Response.status(200)).andReturn(responseBuilderMock);
expect(responseBuilderMock.entity(is)).andReturn(responseBuilderMock);
expect(responseBuilderMock.type("text/plain")).andReturn(responseBuilderMock);
expect(responseBuilderMock.build()).andReturn(responseMock);
PowerMock.replay(streamProviderMock,URLStreamProvider.class,Response.class,responseBuilderMock,uriMock,URI.class);
replay(getUriInfo(),urlConnectionMock,getHttpHeaders());
Response resultForPostRequest=ps.processPostRequestForwarding(is,getHttpHeaders(),getUriInfo());
assertSame(resultForPostRequest,responseMock);
}
Class: org.apache.ambari.server.resources.TestResources APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResource() throws Exception {
File resFile=resMan.getResource(resourceFile.getName());
assertTrue(resFile.exists());
String resContent=FileUtils.readFileToString(resFile);
assertEquals(resContent,RESOURCE_FILE_CONTENT);
}
Class: org.apache.ambari.server.scheduler.ExecutionScheduleManagerTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testScheduleBatch() throws Exception {
RequestExecution requestExecution=createRequestExecution(true);
Assert.assertNotNull(requestExecution);
executionScheduleManager.scheduleBatch(requestExecution);
String jobName1=executionScheduleManager.getJobName(requestExecution.getId(),10L);
String jobName2=executionScheduleManager.getJobName(requestExecution.getId(),12L);
JobDetail jobDetail1=null;
JobDetail jobDetail2=null;
Trigger trigger1=null;
Trigger trigger2=null;
for ( String group : scheduler.getJobGroupNames()) {
for ( JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(ExecutionJob.LINEAR_EXECUTION_JOB_GROUP))) {
LOG.info("Found job identified by: " + jobKey);
String jobName=jobKey.getName();
String jobGroup=jobKey.getGroup();
List triggers=(List)scheduler.getTriggersOfJob(jobKey);
Trigger trigger=triggers != null && !triggers.isEmpty() ? triggers.get(0) : null;
Date nextFireTime=trigger != null ? trigger.getNextFireTime() : null;
LOG.info("[jobName] : " + jobName + " [groupName] : "+ jobGroup+ " - "+ nextFireTime);
if (jobName.equals(jobName1)) {
jobDetail1=scheduler.getJobDetail(jobKey);
trigger1=trigger;
}
else if (jobName.equals(jobName2)) {
jobDetail2=scheduler.getJobDetail(jobKey);
trigger2=trigger;
}
}
}
Assert.assertNotNull(jobDetail1);
Assert.assertNotNull(trigger1);
Assert.assertNotNull(jobDetail2);
Assert.assertNull(trigger2);
CronTrigger cronTrigger=(CronTrigger)trigger1;
Schedule schedule=new Schedule();
schedule.setMinutes("10");
schedule.setHours("2");
schedule.setMonth("*");
schedule.setDaysOfMonth("*");
schedule.setDayOfWeek("?");
Assert.assertEquals(schedule.getScheduleExpression(),cronTrigger.getCronExpression());
Assert.assertEquals(jobName1,jobDetail1.getKey().getName());
Assert.assertEquals(jobName2,jobDetail2.getKey().getName());
}
APIUtilityVerifier TestInitializer InternalCallVerifier NullVerifier ConditionMatcher HybridVerifier
@Before public void setup() throws Exception {
InMemoryDefaultTestModule defaultTestModule=new InMemoryDefaultTestModule();
properties=defaultTestModule.getProperties();
injector=Guice.createInjector(Modules.override(defaultTestModule).with(new ExecutionSchedulerTestModule()));
injector.getInstance(GuiceJpaInitializer.class);
clusters=injector.getInstance(Clusters.class);
metaInfo=injector.getInstance(AmbariMetaInfo.class);
executionScheduleManager=injector.getInstance(ExecutionScheduleManager.class);
executionScheduler=injector.getInstance(ExecutionScheduler.class);
requestExecutionFactory=injector.getInstance(RequestExecutionFactory.class);
clusterName="c1";
clusters.addCluster(clusterName,new StackId("HDP-0.1"));
cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
assertThat(executionScheduler,instanceOf(TestExecutionScheduler.class));
TestExecutionScheduler testExecutionScheduler=(TestExecutionScheduler)executionScheduler;
scheduler=testExecutionScheduler.getScheduler();
Assert.assertNotNull(scheduler);
executionScheduleManager.start();
}
InternalCallVerifier BooleanVerifier
@Test public void testHasToleranceThresholdExceeded() throws Exception {
Clusters clustersMock=createMock(Clusters.class);
Cluster clusterMock=createMock(Cluster.class);
Configuration configurationMock=createNiceMock(Configuration.class);
ExecutionScheduler executionSchedulerMock=createMock(ExecutionScheduler.class);
InternalTokenStorage tokenStorageMock=createMock(InternalTokenStorage.class);
ActionDBAccessor actionDBAccessorMock=createMock(ActionDBAccessor.class);
Gson gson=new Gson();
RequestExecution requestExecutionMock=createMock(RequestExecution.class);
Batch batchMock=createMock(Batch.class);
long executionId=11L;
String clusterName="c1";
BatchSettings batchSettings=new BatchSettings();
batchSettings.setTaskFailureToleranceLimit(1);
Map executionMap=new HashMap();
executionMap.put(executionId,requestExecutionMock);
expect(clustersMock.getCluster(clusterName)).andReturn(clusterMock).anyTimes();
expect(clusterMock.getAllRequestExecutions()).andReturn(executionMap).anyTimes();
expect(requestExecutionMock.getBatch()).andReturn(batchMock).anyTimes();
expect(batchMock.getBatchSettings()).andReturn(batchSettings).anyTimes();
replay(clustersMock,clusterMock,configurationMock,requestExecutionMock,executionSchedulerMock,batchMock);
ExecutionScheduleManager scheduleManager=new ExecutionScheduleManager(configurationMock,executionSchedulerMock,tokenStorageMock,clustersMock,actionDBAccessorMock,gson);
HashMap taskCounts=new HashMap(){
{
put(BatchRequestJob.BATCH_REQUEST_FAILED_TASKS_KEY,2);
put(BatchRequestJob.BATCH_REQUEST_TOTAL_TASKS_KEY,10);
}
}
;
boolean exceeded=scheduleManager.hasToleranceThresholdExceeded(executionId,clusterName,taskCounts);
Assert.assertTrue(exceeded);
verify(clustersMock,clusterMock,configurationMock,requestExecutionMock,executionSchedulerMock,batchMock);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testDeleteAllJobs() throws Exception {
RequestExecution requestExecution=createRequestExecution(true);
Assert.assertNotNull(requestExecution);
executionScheduleManager.scheduleBatch(requestExecution);
String jobName1=executionScheduleManager.getJobName(requestExecution.getId(),10L);
String jobName2=executionScheduleManager.getJobName(requestExecution.getId(),12L);
JobDetail jobDetail1=scheduler.getJobDetail(JobKey.jobKey(jobName1,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP));
JobDetail jobDetail2=scheduler.getJobDetail(JobKey.jobKey(jobName2,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP));
Assert.assertNotNull(jobDetail1);
Assert.assertNotNull(jobDetail2);
Assert.assertTrue(!scheduler.getTriggersOfJob(JobKey.jobKey(jobName1,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP)).isEmpty());
executionScheduleManager.deleteAllJobs(requestExecution);
Assert.assertTrue(scheduler.getTriggersOfJob(JobKey.jobKey(jobName1,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP)).isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier ConditionMatcher HybridVerifier
@Test public void testPointInTimeExecutionJob() throws Exception {
RequestExecution requestExecution=createRequestExecution(false);
Assert.assertNotNull(requestExecution);
executionScheduleManager.scheduleBatch(requestExecution);
String jobName1=executionScheduleManager.getJobName(requestExecution.getId(),10L);
String jobName2=executionScheduleManager.getJobName(requestExecution.getId(),12L);
JobDetail jobDetail1=scheduler.getJobDetail(JobKey.jobKey(jobName1,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP));
JobDetail jobDetail2=scheduler.getJobDetail(JobKey.jobKey(jobName2,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP));
Assert.assertNotNull(jobDetail1);
Assert.assertNotNull(jobDetail2);
List extends Trigger> triggers=scheduler.getTriggersOfJob(JobKey.jobKey(jobName1,ExecutionJob.LINEAR_EXECUTION_JOB_GROUP));
Assert.assertNotNull(triggers);
Assert.assertEquals(1,triggers.size());
assertThat(triggers.get(0),instanceOf(SimpleTrigger.class));
Assert.assertNull(jobDetail2.getJobDataMap().getString(ExecutionJob.NEXT_EXECUTION_JOB_NAME_KEY));
int waitCount=0;
while (scheduler.getCurrentlyExecutingJobs().size() != 0 && waitCount < 10) {
Thread.sleep(100);
waitCount++;
}
}
Class: org.apache.ambari.server.scheduler.ExecutionSchedulerTest InternalCallVerifier EqualityVerifier
@Test @PrepareForTest({ExecutionSchedulerImpl.class}) public void testSchedulerInitialize() throws Exception {
ExecutionSchedulerImpl executionScheduler=spy(new ExecutionSchedulerImpl(configuration));
Properties actualProperties=executionScheduler.getQuartzSchedulerProperties();
Assert.assertEquals("2",actualProperties.getProperty("org.quartz.threadPool.threadCount"));
Assert.assertEquals("2",actualProperties.getProperty("org.quartz.dataSource.myDS.maxConnections"));
Assert.assertEquals("false",actualProperties.getProperty("org.quartz.jobStore.isClustered"));
Assert.assertEquals("org.quartz.impl.jdbcjobstore.PostgreSQLDelegate",actualProperties.getProperty("org.quartz.jobStore.driverDelegateClass"));
Assert.assertEquals("select 0",actualProperties.getProperty("org.quartz.dataSource.myDS.validationQuery"));
Assert.assertEquals(ExecutionSchedulerImpl.DEFAULT_SCHEDULER_NAME,actualProperties.getProperty("org.quartz.scheduler.instanceName"));
Assert.assertEquals("org.quartz.simpl.SimpleThreadPool",actualProperties.getProperty("org.quartz.threadPool.class"));
}
InternalCallVerifier BooleanVerifier
@Test @PrepareForTest({ExecutionSchedulerImpl.class}) public void testSchedulerStartDelay() throws Exception {
StdSchedulerFactory factory=createNiceMock(StdSchedulerFactory.class);
Scheduler scheduler=createNiceMock(Scheduler.class);
expect(factory.getScheduler()).andReturn(scheduler).anyTimes();
expectNew(StdSchedulerFactory.class).andReturn(factory);
expect(scheduler.isStarted()).andReturn(false).anyTimes();
expectPrivate(scheduler,"startDelayed",new Integer(180)).once();
expectPrivate(scheduler,"start").once();
PowerMock.replay(factory,StdSchedulerFactory.class,scheduler);
ExecutionSchedulerImpl executionScheduler=new ExecutionSchedulerImpl(configuration);
executionScheduler.startScheduler(180);
executionScheduler.startScheduler(null);
PowerMock.verify(factory,StdSchedulerFactory.class,scheduler);
Assert.assertTrue(executionScheduler.isInitialized());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetQuartzDbDelegateClassAndValidationQuery() throws Exception {
Properties testProperties=new Properties();
testProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:postgresql://host:port/dbname");
testProperties.setProperty(Configuration.SERVER_DB_NAME_KEY,"ambari");
Configuration configuration1=new Configuration(testProperties);
ExecutionSchedulerImpl executionScheduler=spy(new ExecutionSchedulerImpl(configuration1));
String[] subProps=executionScheduler.getQuartzDbDelegateClassAndValidationQuery();
Assert.assertEquals("org.quartz.impl.jdbcjobstore.PostgreSQLDelegate",subProps[0]);
Assert.assertEquals("select 0",subProps[1]);
testProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:mysql://host:port/dbname");
configuration1=new Configuration(testProperties);
executionScheduler=spy(new ExecutionSchedulerImpl(configuration1));
subProps=executionScheduler.getQuartzDbDelegateClassAndValidationQuery();
Assert.assertEquals("org.quartz.impl.jdbcjobstore.StdJDBCDelegate",subProps[0]);
Assert.assertEquals("select 0",subProps[1]);
testProperties.setProperty(Configuration.SERVER_JDBC_URL_KEY,"jdbc:oracle:thin://host:port/dbname");
configuration1=new Configuration(testProperties);
executionScheduler=spy(new ExecutionSchedulerImpl(configuration1));
subProps=executionScheduler.getQuartzDbDelegateClassAndValidationQuery();
Assert.assertEquals("org.quartz.impl.jdbcjobstore.oracle.OracleDelegate",subProps[0]);
Assert.assertEquals("select 0 from dual",subProps[1]);
}
InternalCallVerifier BooleanVerifier
@Test @PrepareForTest({ExecutionSchedulerImpl.class}) public void testSchedulerStartStop() throws Exception {
StdSchedulerFactory factory=createNiceMock(StdSchedulerFactory.class);
Scheduler scheduler=createNiceMock(Scheduler.class);
expect(factory.getScheduler()).andReturn(scheduler);
expectPrivate(scheduler,"startDelayed",new Integer(180)).once();
expectNew(StdSchedulerFactory.class).andReturn(factory);
expectPrivate(scheduler,"shutdown").once();
PowerMock.replay(factory,StdSchedulerFactory.class,scheduler);
ExecutionSchedulerImpl executionScheduler=new ExecutionSchedulerImpl(configuration);
executionScheduler.startScheduler(180);
executionScheduler.stopScheduler();
PowerMock.verify(factory,StdSchedulerFactory.class,scheduler);
Assert.assertTrue(executionScheduler.isInitialized());
}
Class: org.apache.ambari.server.security.AbstractSecurityHeaderFilterTest APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDoFilter_EmptyValuesSSL() throws Exception {
final File httpPassFile=temporaryFolder.newFile();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.API_USE_SSL,"true");
properties.setProperty(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY,httpPassFile.getParent());
properties.setProperty(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY,httpPassFile.getName());
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER),"");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER),"");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER),"");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
FilterConfig filterConfig=createNiceMock(FilterConfig.class);
HttpServletRequest servletRequest=createStrictMock(HttpServletRequest.class);
expectHttpServletRequestMock(servletRequest);
HttpServletResponse servletResponse=createStrictMock(HttpServletResponse.class);
FilterChain filterChain=createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest,servletResponse);
expectLastCall().once();
replayAll();
AbstractSecurityHeaderFilter securityFilter=injector.getInstance(filterClass);
Assert.assertNotNull(securityFilter);
securityFilter.init(filterConfig);
securityFilter.doFilter(servletRequest,servletResponse,filterChain);
verifyAll();
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDoFilter_DefaultValuesSSL() throws Exception {
final File httpPassFile=temporaryFolder.newFile();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.API_USE_SSL,"true");
properties.setProperty(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY,httpPassFile.getParent());
properties.setProperty(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY,httpPassFile.getName());
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
FilterConfig filterConfig=createNiceMock(FilterConfig.class);
HttpServletRequest servletRequest=createStrictMock(HttpServletRequest.class);
expectHttpServletRequestMock(servletRequest);
HttpServletResponse servletResponse=createStrictMock(HttpServletResponse.class);
servletResponse.setHeader(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER,defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER));
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER,defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER));
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER,defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER));
expectLastCall().once();
FilterChain filterChain=createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest,servletResponse);
expectLastCall().once();
replayAll();
AbstractSecurityHeaderFilter securityFilter=injector.getInstance(filterClass);
Assert.assertNotNull(securityFilter);
securityFilter.init(filterConfig);
securityFilter.doFilter(servletRequest,servletResponse,filterChain);
verifyAll();
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDoFilter_CustomValuesSSL() throws Exception {
final File httpPassFile=temporaryFolder.newFile();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.API_USE_SSL,"true");
properties.setProperty(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY,httpPassFile.getParent());
properties.setProperty(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY,httpPassFile.getName());
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER),"custom1");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER),"custom2");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER),"custom3");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
FilterConfig filterConfig=createNiceMock(FilterConfig.class);
HttpServletRequest servletRequest=createStrictMock(HttpServletRequest.class);
expectHttpServletRequestMock(servletRequest);
HttpServletResponse servletResponse=createStrictMock(HttpServletResponse.class);
servletResponse.setHeader(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER,"custom1");
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER,"custom2");
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER,"custom3");
expectLastCall().once();
FilterChain filterChain=createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest,servletResponse);
expectLastCall().once();
replayAll();
AbstractSecurityHeaderFilter securityFilter=injector.getInstance(filterClass);
Assert.assertNotNull(securityFilter);
securityFilter.init(filterConfig);
securityFilter.doFilter(servletRequest,servletResponse,filterChain);
verifyAll();
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDoFilter_DefaultValuesNoSSL() throws Exception {
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.API_USE_SSL,"false");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
FilterConfig filterConfig=createNiceMock(FilterConfig.class);
HttpServletRequest servletRequest=createStrictMock(HttpServletRequest.class);
expectHttpServletRequestMock(servletRequest);
HttpServletResponse servletResponse=createStrictMock(HttpServletResponse.class);
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER,defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER));
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER,defatulPropertyValueMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER));
expectLastCall().once();
FilterChain filterChain=createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest,servletResponse);
expectLastCall().once();
replayAll();
AbstractSecurityHeaderFilter securityFilter=injector.getInstance(filterClass);
Assert.assertNotNull(securityFilter);
securityFilter.init(filterConfig);
securityFilter.doFilter(servletRequest,servletResponse,filterChain);
verifyAll();
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDoFilter_CustomValuesNoSSL() throws Exception {
final File httpPassFile=temporaryFolder.newFile();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY,httpPassFile.getParent());
properties.setProperty(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY,httpPassFile.getName());
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER),"custom1");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER),"custom2");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER),"custom3");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
FilterConfig filterConfig=createNiceMock(FilterConfig.class);
HttpServletRequest servletRequest=createStrictMock(HttpServletRequest.class);
expectHttpServletRequestMock(servletRequest);
HttpServletResponse servletResponse=createStrictMock(HttpServletResponse.class);
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER,"custom2");
expectLastCall().once();
servletResponse.setHeader(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER,"custom3");
expectLastCall().once();
FilterChain filterChain=createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest,servletResponse);
expectLastCall().once();
replayAll();
AbstractSecurityHeaderFilter securityFilter=injector.getInstance(filterClass);
Assert.assertNotNull(securityFilter);
securityFilter.init(filterConfig);
securityFilter.doFilter(servletRequest,servletResponse,filterChain);
verifyAll();
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testDoFilter_EmptyValuesNoSSL() throws Exception {
final File httpPassFile=temporaryFolder.newFile();
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY,httpPassFile.getParent());
properties.setProperty(Configuration.CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY,httpPassFile.getName());
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.STRICT_TRANSPORT_HEADER),"");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_FRAME_OPTIONS_HEADER),"");
properties.setProperty(propertyNameMap.get(AbstractSecurityHeaderFilter.X_XSS_PROTECTION_HEADER),"");
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
FilterConfig filterConfig=createNiceMock(FilterConfig.class);
HttpServletRequest servletRequest=createStrictMock(HttpServletRequest.class);
expectHttpServletRequestMock(servletRequest);
HttpServletResponse servletResponse=createStrictMock(HttpServletResponse.class);
FilterChain filterChain=createStrictMock(FilterChain.class);
filterChain.doFilter(servletRequest,servletResponse);
expectLastCall().once();
replayAll();
AbstractSecurityHeaderFilter securityFilter=injector.getInstance(filterClass);
Assert.assertNotNull(securityFilter);
securityFilter.init(filterConfig);
securityFilter.doFilter(servletRequest,servletResponse,filterChain);
verifyAll();
}
Class: org.apache.ambari.server.security.CertGenerationTest InternalCallVerifier BooleanVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testServerCertGen() throws Exception {
File serverCrt=new File(temp.getRoot().getAbsoluteFile() + File.separator + Configuration.SRVR_CRT_NAME_DEFAULT);
Assert.assertTrue(serverCrt.exists());
}
InternalCallVerifier BooleanVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testRevokeExistingAgentCert() throws Exception {
Map config=certMan.configs.getConfigsMap();
config.put(Configuration.PASSPHRASE_KEY,"passphrase");
String agentHostname="agent_hostname";
SignCertResponse scr=certMan.signAgentCrt(agentHostname,"incorrect_agentCrtReqContent","passphrase");
Assert.assertFalse(scr.getMessage().contains("-revoke"));
File fakeAgentCertFile=new File(temp.getRoot().getAbsoluteFile() + File.separator + agentHostname+ ".crt");
Assert.assertTrue(fakeAgentCertFile.exists());
scr=certMan.signAgentCrt(agentHostname,"incorrect_agentCrtReqContent","passphrase");
Assert.assertTrue(scr.getMessage().contains("-revoke"));
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPassFileGen() throws Exception {
File passFile=new File(temp.getRoot().getAbsolutePath() + File.separator + passFileName);
Assert.assertTrue(passFile.exists());
String pass=FileUtils.readFileToString(passFile);
Assert.assertEquals(pass.length(),passLen);
if (ShellCommandUtil.LINUX) {
String permissions=ShellCommandUtil.getUnixFilePermissions(passFile.getAbsolutePath());
Assert.assertEquals(ShellCommandUtil.MASK_OWNER_ONLY_RW,permissions);
}
}
InternalCallVerifier BooleanVerifier
@Test public void testServerKeyGen() throws Exception {
File serverKey=new File(temp.getRoot().getAbsoluteFile() + File.separator + Configuration.SRVR_KEY_NAME_DEFAULT);
Assert.assertTrue(serverKey.exists());
}
InternalCallVerifier BooleanVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testServerKeystoreGen() throws Exception {
File serverKeyStrore=new File(temp.getRoot().getAbsoluteFile() + File.separator + Configuration.KSTR_NAME_DEFAULT);
Assert.assertTrue(serverKeyStrore.exists());
}
Class: org.apache.ambari.server.security.SecurePasswordHelperTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateSecurePassword() throws Exception {
String password1=securePasswordHelper.createSecurePassword();
Assert.assertNotNull(password1);
Assert.assertEquals(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_LENGTH,password1.length());
String password2=securePasswordHelper.createSecurePassword();
Assert.assertNotNull(password2);
Assert.assertEquals(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_LENGTH,password2.length());
Assert.assertFalse((password1.equals(password2)));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateSecurePasswordWithRules() throws Exception {
String password;
password=securePasswordHelper.createSecurePassword(null,null,null,null,null,null);
Assert.assertNotNull(password);
Assert.assertEquals(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_LENGTH,password.length());
assertMinLowercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_LOWERCASE_LETTERS,password);
assertMinUppercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_UPPERCASE_LETTERS,password);
assertMinDigits(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_DIGITS,password);
assertMinPunctuation(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_PUNCTUATION,password);
assertMinWhitespace(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_WHITESPACE,password);
password=securePasswordHelper.createSecurePassword(10,null,null,null,null,null);
Assert.assertNotNull(password);
Assert.assertEquals(10,password.length());
assertMinLowercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_LOWERCASE_LETTERS,password);
assertMinUppercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_UPPERCASE_LETTERS,password);
assertMinDigits(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_DIGITS,password);
assertMinPunctuation(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_PUNCTUATION,password);
assertMinWhitespace(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_WHITESPACE,password);
password=securePasswordHelper.createSecurePassword(0,null,null,null,null,null);
Assert.assertNotNull(password);
Assert.assertEquals(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_LENGTH,password.length());
assertMinLowercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_LOWERCASE_LETTERS,password);
assertMinUppercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_UPPERCASE_LETTERS,password);
assertMinDigits(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_DIGITS,password);
assertMinPunctuation(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_PUNCTUATION,password);
assertMinWhitespace(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_WHITESPACE,password);
password=securePasswordHelper.createSecurePassword(-20,null,null,null,null,null);
Assert.assertNotNull(password);
Assert.assertEquals(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_LENGTH,password.length());
assertMinLowercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_LOWERCASE_LETTERS,password);
assertMinUppercaseLetters(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_UPPERCASE_LETTERS,password);
assertMinDigits(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_DIGITS,password);
assertMinPunctuation(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_PUNCTUATION,password);
assertMinWhitespace(SecurePasswordHelper.DEFAULT_SECURE_PASSWORD_MIN_WHITESPACE,password);
password=securePasswordHelper.createSecurePassword(100,30,20,10,5,2);
Assert.assertNotNull(password);
Assert.assertEquals(100,password.length());
assertMinLowercaseLetters(30,password);
assertMinUppercaseLetters(20,password);
assertMinDigits(10,password);
assertMinPunctuation(5,password);
assertMinWhitespace(2,password);
password=securePasswordHelper.createSecurePassword(100,20,20,20,20,0);
Assert.assertNotNull(password);
Assert.assertEquals(100,password.length());
assertMinLowercaseLetters(20,password);
assertMinUppercaseLetters(20,password);
assertMinDigits(20,password);
assertMinPunctuation(20,password);
assertMinWhitespace(0,password);
}
Class: org.apache.ambari.server.security.SecurityFilterTest InternalCallVerifier EqualityVerifier
@Test public void mustAllowSecurePortRequests() throws Exception {
SecurityFilter filter=new SecurityFilter();
MockHttpServletResponse response=new MockHttpServletResponse();
MockHttpServletRequest request=this.getDefaultRequest();
request.setServerPort(8441);
request.setLocalPort(8441);
request.setRequestURI("/certs/");
MockFilterChain chain=new MockFilterChain();
filter.doFilter(request,response,chain);
assertEquals(request,chain.getRequest());
assertEquals(response,chain.getResponse());
}
InternalCallVerifier NullVerifier
@Test public void mustFilterNonHttpsRequests() throws Exception {
SecurityFilter filter=new SecurityFilter();
MockHttpServletRequest request=this.getDefaultRequest();
request.setRequestURI("/certs/");
request.setScheme("http");
MockHttpServletResponse response=new MockHttpServletResponse();
request.setLocalPort(8440);
MockFilterChain chain=new MockFilterChain();
filter.doFilter(request,response,chain);
assertNull(chain.getRequest());
assertNull(chain.getResponse());
}
InternalCallVerifier EqualityVerifier
@Test public void mustAllowCertCaGetRequests() throws Exception {
SecurityFilter filter=new SecurityFilter();
MockHttpServletResponse response=new MockHttpServletResponse();
MockHttpServletRequest request=this.getDefaultRequest();
request.setRequestURI("/cert/ca/");
MockFilterChain chain=new MockFilterChain();
filter.doFilter(request,response,chain);
assertEquals(request,chain.getRequest());
assertEquals(response,chain.getResponse());
}
InternalCallVerifier EqualityVerifier
@Test public void mustAllowCertCreationRequests() throws Exception {
SecurityFilter filter=new SecurityFilter();
MockHttpServletResponse response=new MockHttpServletResponse();
MockHttpServletRequest request=this.getDefaultRequest();
request.setRequestURI("/certs/www.andromeda-01.com");
request.setMethod("POST");
MockFilterChain chain=new MockFilterChain();
filter.doFilter(request,response,chain);
assertEquals(request,chain.getRequest());
assertEquals(response,chain.getResponse());
}
Class: org.apache.ambari.server.security.SslExecutionTest InternalCallVerifier BooleanVerifier
@Test public void testSslLogging() throws Exception {
LOG.info("Testing sign");
certMan.configs.getConfigsMap().put(Configuration.PASSPHRASE_KEY,"123123");
LOG.info("key dir = " + certMan.configs.getConfigsMap().get(Configuration.SRVR_KSTR_DIR_KEY));
SignCertResponse signAgentCrt=certMan.signAgentCrt("somehost","gdfgdfg","123123");
LOG.info("-------------RESPONCE-------------");
LOG.info("-------------MESSAGE--------------");
LOG.info(signAgentCrt.getMessage());
LOG.info("---------------------------------");
LOG.info("-------------RESULT--------------");
LOG.info(signAgentCrt.getResult());
LOG.info("---------------------------------");
assertTrue(SignCertResponse.ERROR_STATUS.equals(signAgentCrt.getResult()));
}
Class: org.apache.ambari.server.security.authorization.AmbariAuthorizationProviderDisableUserTest UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDisabledUserViaDaoProvider(){
try {
daoProvider.authenticate(new UsernamePasswordAuthenticationToken("disabledUser","pwd"));
Assert.fail("Disabled user passes authentication");
}
catch ( DisabledException e) {
Assert.assertEquals("User is disabled",e.getMessage());
}
Authentication auth=daoProvider.authenticate(new UsernamePasswordAuthenticationToken("activeUser","pwd"));
Assert.assertNotNull(auth);
Assert.assertTrue(auth.isAuthenticated());
}
Class: org.apache.ambari.server.security.authorization.AmbariLdapAuthenticationProviderForDNWithSpaceTest InternalCallVerifier BooleanVerifier
@Test public void testDisabled() throws Exception {
configuration.setClientSecurityType(ClientSecurityType.LOCAL);
Authentication authentication=new UsernamePasswordAuthenticationToken("the allowedUser","password");
Authentication auth=authenticationProvider.authenticate(authentication);
assertTrue(auth == null);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testAuthenticate() throws Exception {
assertNull("User alread exists in DB",userDAO.findLdapUserByName("the allowedUser"));
Authentication authentication=new UsernamePasswordAuthenticationToken("the allowedUser","password");
Authentication result=authenticationProvider.authenticate(authentication);
assertTrue(result.isAuthenticated());
result=authenticationProvider.authenticate(authentication);
assertTrue(result.isAuthenticated());
}
Class: org.apache.ambari.server.security.authorization.AmbariLdapAuthenticationProviderTest InternalCallVerifier BooleanVerifier
@Test public void testDisabled() throws Exception {
configuration.setClientSecurityType(ClientSecurityType.LOCAL);
Authentication authentication=new UsernamePasswordAuthenticationToken("allowedUser","password");
Authentication auth=authenticationProvider.authenticate(authentication);
Assert.assertTrue(auth == null);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testAuthenticate() throws Exception {
assertNull("User alread exists in DB",userDAO.findLdapUserByName("allowedUser"));
Authentication authentication=new UsernamePasswordAuthenticationToken("allowedUser","password");
Authentication result=authenticationProvider.authenticate(authentication);
assertTrue(result.isAuthenticated());
result=authenticationProvider.authenticate(authentication);
assertTrue(result.isAuthenticated());
}
Class: org.apache.ambari.server.security.authorization.AmbariLocalUserDetailsServiceTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testLoadUserByUsername() throws Exception {
UserDetails userDetails=userDetailsService.loadUserByUsername("administrator");
assertEquals("Wrong username","administrator",userDetails.getUsername());
assertTrue("Password not matches",passwordEncoder.matches("admin",userDetails.getPassword()));
assertFalse("Wrong password accepted",passwordEncoder.matches("wrong",userDetails.getPassword()));
}
Class: org.apache.ambari.server.security.authorization.AuthorizationHelperTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConvertPrivilegesToAuthorities() throws Exception {
Collection privilegeEntities=new ArrayList();
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(1);
resourceTypeEntity.setName("CLUSTER");
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setId(1L);
resourceEntity.setResourceType(resourceTypeEntity);
PrincipalTypeEntity principalTypeEntity=new PrincipalTypeEntity();
principalTypeEntity.setId(1);
principalTypeEntity.setName("USER");
PrincipalEntity principalEntity=new PrincipalEntity();
principalEntity.setPrincipalType(principalTypeEntity);
principalEntity.setId(1L);
PermissionEntity permissionEntity1=new PermissionEntity();
permissionEntity1.setPermissionName("Permission1");
permissionEntity1.setResourceType(resourceTypeEntity);
permissionEntity1.setId(2);
permissionEntity1.setPermissionName("CLUSTER.USER");
PermissionEntity permissionEntity2=new PermissionEntity();
permissionEntity2.setPermissionName("Permission1");
permissionEntity2.setResourceType(resourceTypeEntity);
permissionEntity2.setId(3);
permissionEntity2.setPermissionName("CLUSTER.ADMINISTRATOR");
PrivilegeEntity privilegeEntity1=new PrivilegeEntity();
privilegeEntity1.setId(1);
privilegeEntity1.setPermission(permissionEntity1);
privilegeEntity1.setPrincipal(principalEntity);
privilegeEntity1.setResource(resourceEntity);
PrivilegeEntity privilegeEntity2=new PrivilegeEntity();
privilegeEntity2.setId(1);
privilegeEntity2.setPermission(permissionEntity2);
privilegeEntity2.setPrincipal(principalEntity);
privilegeEntity2.setResource(resourceEntity);
privilegeEntities.add(privilegeEntity1);
privilegeEntities.add(privilegeEntity2);
Collection authorities=new AuthorizationHelper().convertPrivilegesToAuthorities(privilegeEntities);
assertEquals("Wrong number of authorities",2,authorities.size());
Set authorityNames=new HashSet();
for ( GrantedAuthority authority : authorities) {
authorityNames.add(authority.getAuthority());
}
Assert.assertTrue(authorityNames.contains("CLUSTER.USER@1"));
Assert.assertTrue(authorityNames.contains("CLUSTER.ADMINISTRATOR@1"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testIsAuthorized(){
RoleAuthorizationEntity readOnlyRoleAuthorizationEntity=new RoleAuthorizationEntity();
readOnlyRoleAuthorizationEntity.setAuthorizationId(RoleAuthorization.CLUSTER_VIEW_METRICS.getId());
RoleAuthorizationEntity privilegedRoleAuthorizationEntity=new RoleAuthorizationEntity();
privilegedRoleAuthorizationEntity.setAuthorizationId(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS.getId());
RoleAuthorizationEntity administratorRoleAuthorizationEntity=new RoleAuthorizationEntity();
administratorRoleAuthorizationEntity.setAuthorizationId(RoleAuthorization.AMBARI_MANAGE_USERS.getId());
ResourceTypeEntity clusterResourceTypeEntity=new ResourceTypeEntity();
clusterResourceTypeEntity.setId(1);
clusterResourceTypeEntity.setName(ResourceType.CLUSTER.name());
ResourceTypeEntity cluster2ResourceTypeEntity=new ResourceTypeEntity();
cluster2ResourceTypeEntity.setId(2);
cluster2ResourceTypeEntity.setName(ResourceType.CLUSTER.name());
ResourceEntity clusterResourceEntity=new ResourceEntity();
clusterResourceEntity.setResourceType(clusterResourceTypeEntity);
clusterResourceEntity.setId(1L);
ResourceEntity cluster2ResourceEntity=new ResourceEntity();
cluster2ResourceEntity.setResourceType(cluster2ResourceTypeEntity);
cluster2ResourceEntity.setId(2L);
PermissionEntity readOnlyPermissionEntity=new PermissionEntity();
readOnlyPermissionEntity.setAuthorizations(Collections.singleton(readOnlyRoleAuthorizationEntity));
PermissionEntity privilegedPermissionEntity=new PermissionEntity();
privilegedPermissionEntity.setAuthorizations(Arrays.asList(readOnlyRoleAuthorizationEntity,privilegedRoleAuthorizationEntity));
PermissionEntity administratorPermissionEntity=new PermissionEntity();
administratorPermissionEntity.setAuthorizations(Arrays.asList(readOnlyRoleAuthorizationEntity,privilegedRoleAuthorizationEntity,administratorRoleAuthorizationEntity));
PrivilegeEntity readOnlyPrivilegeEntity=new PrivilegeEntity();
readOnlyPrivilegeEntity.setPermission(readOnlyPermissionEntity);
readOnlyPrivilegeEntity.setResource(clusterResourceEntity);
PrivilegeEntity readOnly2PrivilegeEntity=new PrivilegeEntity();
readOnly2PrivilegeEntity.setPermission(readOnlyPermissionEntity);
readOnly2PrivilegeEntity.setResource(cluster2ResourceEntity);
PrivilegeEntity privilegedPrivilegeEntity=new PrivilegeEntity();
privilegedPrivilegeEntity.setPermission(privilegedPermissionEntity);
privilegedPrivilegeEntity.setResource(clusterResourceEntity);
PrivilegeEntity privileged2PrivilegeEntity=new PrivilegeEntity();
privileged2PrivilegeEntity.setPermission(privilegedPermissionEntity);
privileged2PrivilegeEntity.setResource(cluster2ResourceEntity);
PrivilegeEntity administratorPrivilegeEntity=new PrivilegeEntity();
administratorPrivilegeEntity.setPermission(administratorPermissionEntity);
administratorPrivilegeEntity.setResource(clusterResourceEntity);
GrantedAuthority readOnlyAuthority=new AmbariGrantedAuthority(readOnlyPrivilegeEntity);
GrantedAuthority readOnly2Authority=new AmbariGrantedAuthority(readOnly2PrivilegeEntity);
GrantedAuthority privilegedAuthority=new AmbariGrantedAuthority(privilegedPrivilegeEntity);
GrantedAuthority privileged2Authority=new AmbariGrantedAuthority(privileged2PrivilegeEntity);
GrantedAuthority administratorAuthority=new AmbariGrantedAuthority(administratorPrivilegeEntity);
Authentication noAccessUser=new TestAuthentication(Collections.emptyList());
Authentication readOnlyUser=new TestAuthentication(Collections.singleton(readOnlyAuthority));
Authentication privilegedUser=new TestAuthentication(Arrays.asList(readOnlyAuthority,privilegedAuthority));
Authentication privileged2User=new TestAuthentication(Arrays.asList(readOnly2Authority,privileged2Authority));
Authentication administratorUser=new TestAuthentication(Collections.singleton(administratorAuthority));
SecurityContext context=SecurityContextHolder.getContext();
assertFalse(AuthorizationHelper.isAuthorized(null,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(noAccessUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(noAccessUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(noAccessUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
assertTrue(AuthorizationHelper.isAuthorized(readOnlyUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(readOnlyUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(readOnlyUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
assertTrue(AuthorizationHelper.isAuthorized(privilegedUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertTrue(AuthorizationHelper.isAuthorized(privilegedUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(privilegedUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
assertFalse(AuthorizationHelper.isAuthorized(privileged2User,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(privileged2User,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(privileged2User,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
assertTrue(AuthorizationHelper.isAuthorized(administratorUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertTrue(AuthorizationHelper.isAuthorized(administratorUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertTrue(AuthorizationHelper.isAuthorized(administratorUser,ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
context.setAuthentication(noAccessUser);
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
context.setAuthentication(readOnlyUser);
assertTrue(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
context.setAuthentication(privilegedUser);
assertTrue(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertTrue(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
context.setAuthentication(privileged2User);
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertFalse(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
context.setAuthentication(administratorUser);
assertTrue(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_VIEW_METRICS)));
assertTrue(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.CLUSTER_TOGGLE_KERBEROS)));
assertTrue(AuthorizationHelper.isAuthorized(ResourceType.CLUSTER,1L,EnumSet.of(RoleAuthorization.AMBARI_MANAGE_USERS)));
}
Class: org.apache.ambari.server.security.authorization.LdapServerPropertiesTest InternalCallVerifier BooleanVerifier
@Test public void testEquals() throws Exception {
LdapServerProperties properties1=configuration.getLdapServerProperties();
LdapServerProperties properties2=configuration.getLdapServerProperties();
assertTrue("Properties object is same",properties1 != properties2);
assertTrue("Objects are not equal",properties1.equals(properties2));
assertTrue("Hash codes are not equal",properties1.hashCode() == properties2.hashCode());
properties2.setSecondaryUrl("5.6.7.8:389");
assertFalse("Objects are equal",properties1.equals(properties2));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetLdapUrls() throws Exception {
List urls=ldapServerProperties.getLdapUrls();
assertEquals(INCORRECT_URL_LIST,1,urls.size());
assertEquals(INCORRECT_URL_LIST,"ldap://1.2.3.4:389",urls.get(0));
ldapServerProperties.setSecondaryUrl("4.3.2.1:1234");
urls=ldapServerProperties.getLdapUrls();
assertEquals(INCORRECT_URL_LIST,2,urls.size());
assertEquals(INCORRECT_URL_LIST,"ldap://4.3.2.1:1234",urls.get(1));
ldapServerProperties.setUseSsl(true);
urls=ldapServerProperties.getLdapUrls();
assertEquals(INCORRECT_URL_LIST,"ldaps://1.2.3.4:389",urls.get(0));
assertEquals(INCORRECT_URL_LIST,"ldaps://4.3.2.1:1234",urls.get(1));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetUserSearchFilter() throws Exception {
assertEquals(INCORRECT_USER_SEARCH_FILTER,"(&(uid={0})(objectClass=dummyObjectClass))",ldapServerProperties.getUserSearchFilter());
ldapServerProperties.setUsernameAttribute("anotherName");
assertEquals(INCORRECT_USER_SEARCH_FILTER,"(&(anotherName={0})(objectClass=dummyObjectClass))",ldapServerProperties.getUserSearchFilter());
}
Class: org.apache.ambari.server.security.authorization.TestUsers InternalCallVerifier EqualityVerifier
@Test public void testRemoveMemberFromGroup() throws Exception {
final String groupName="engineering";
users.createGroup(groupName);
users.createUser("user","user");
users.addMemberToGroup(groupName,"user");
assertEquals(1,groupDAO.findGroupByName(groupName).getMemberEntities().size());
users.removeMemberFromGroup(groupName,"user");
assertEquals(0,groupDAO.findGroupByName(groupName).getMemberEntities().size());
}
InternalCallVerifier EqualityVerifier
@Test public void testRemoveGroup() throws Exception {
final String groupName="engineering";
users.createGroup(groupName);
final Group group=users.getGroup(groupName);
assertEquals(1,users.getAllGroups().size());
users.removeGroup(group);
assertEquals(0,users.getAllGroups().size());
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testGetAllMembers() throws Exception {
final String groupName="engineering";
users.createGroup(groupName);
users.createUser("user1","user1");
users.createUser("user2","user2");
users.createUser("user3","user3");
users.addMemberToGroup(groupName,"user1");
users.addMemberToGroup(groupName,"user2");
assertEquals(2,users.getAllMembers(groupName).size());
try {
users.getAllMembers("non existing");
Assert.fail("It shouldn't be possible to call getAllMembers() on non-existing group");
}
catch ( Exception ex) {
}
}
InternalCallVerifier BooleanVerifier
@Test public void testRevokeAdminPrivilege() throws Exception {
users.createUser("admin","admin",true,true,false);
final User admin=users.getAnyUser("admin");
users.revokeAdminPrivilege(admin.getUserId());
Assert.assertFalse(users.getAnyUser("admin").isAdmin());
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testSetUserActive() throws Exception {
users.createUser("user","user");
users.setUserActive("user",false);
Assert.assertEquals(false,users.getAnyUser("user").isActive());
users.setUserActive("user",true);
Assert.assertEquals(true,users.getAnyUser("user").isActive());
try {
users.setUserActive("fake user",true);
Assert.fail("It shouldn't be possible to call setUserActive() on non-existing user");
}
catch ( Exception ex) {
}
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateUserFiveParams() throws Exception {
users.createUser("user","user",false,false,false);
final User createdUser=users.getAnyUser("user");
Assert.assertEquals("user",createdUser.getUserName());
Assert.assertEquals(false,createdUser.isActive());
Assert.assertEquals(false,createdUser.isLdapUser());
Assert.assertEquals(false,createdUser.isAdmin());
users.createUser("user2","user2",true,true,true);
final User createdUser2=users.getAnyUser("user2");
Assert.assertEquals("user2",createdUser2.getUserName());
Assert.assertEquals(true,createdUser2.isActive());
Assert.assertEquals(true,createdUser2.isLdapUser());
Assert.assertEquals(true,createdUser2.isAdmin());
}
InternalCallVerifier BooleanVerifier
@Test public void testGrantAdminPrivilege() throws Exception {
users.createUser("user","user");
final User user=users.getAnyUser("user");
users.grantAdminPrivilege(user.getUserId());
Assert.assertTrue(users.getAnyUser("user").isAdmin());
}
UtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier HybridVerifier
@Test public void testModifyPassword_UserByNonAdmin() throws Exception {
Authentication auth=new UsernamePasswordAuthenticationToken("user2",null);
SecurityContextHolder.getContext().setAuthentication(auth);
users.createUser("user","user");
users.createUser("user2","user2");
UserEntity userEntity=userDAO.findUserByName("user");
assertNotSame("user",userEntity.getUserPassword());
assertTrue(passwordEncoder.matches("user",userEntity.getUserPassword()));
try {
users.modifyPassword("user","user2","user_new_password");
Assert.fail("Exception should be thrown here as user2 can't change password of user");
}
catch ( AmbariException ex) {
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetAnyUser() throws Exception {
users.createUser("user","user",true,false,false);
users.createUser("user_ldap","user_ldap",true,false,true);
assertEquals("user",users.getAnyUser("user").getUserName());
assertEquals("user_ldap",users.getAnyUser("user_ldap").getUserName());
Assert.assertNull(users.getAnyUser("non_existing"));
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testSetUserLdap() throws Exception {
users.createUser("user","user");
users.createUser("user_ldap","user_ldap",true,false,true);
users.setUserLdap("user");
Assert.assertEquals(true,users.getAnyUser("user").isLdapUser());
try {
users.setUserLdap("fake user");
Assert.fail("It shouldn't be possible to call setUserLdap() on non-existing user");
}
catch ( AmbariException ex) {
}
}
InternalCallVerifier BooleanVerifier IdentityVerifier HybridVerifier
@Test public void testModifyPassword_UserByAdmin() throws Exception {
users.createUser("admin","admin",true,true,false);
users.createUser("user","user");
UserEntity userEntity=userDAO.findUserByName("user");
assertNotSame("user",userEntity.getUserPassword());
assertTrue(passwordEncoder.matches("user",userEntity.getUserPassword()));
users.modifyPassword("user","admin","user_new_password");
assertTrue(passwordEncoder.matches("user_new_password",userDAO.findUserByName("user").getUserPassword()));
}
InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetAllUsers() throws Exception {
Authentication auth=new UsernamePasswordAuthenticationToken("user",null);
SecurityContextHolder.getContext().setAuthentication(auth);
users.createUser("user","user");
users.createUser("admin","admin");
List userList=users.getAllUsers();
assertEquals(2,userList.size());
for ( User user : userList) {
assertEquals(false,user.isLdapUser());
}
assertEquals(2,userDAO.findAll().size());
UserEntity userEntity=userDAO.findUserByName("user");
assertNotNull("user",userEntity.getUserPassword());
users.modifyPassword("user","user","resu");
assertNotSame(userEntity.getUserPassword(),userDAO.findUserByName("user").getUserPassword());
}
InternalCallVerifier EqualityVerifier
@Test public void testCreateUserTwoParams() throws Exception {
users.createUser("user","user");
final User createdUser=users.getAnyUser("user");
Assert.assertEquals("user",createdUser.getUserName());
Assert.assertEquals(true,createdUser.isActive());
Assert.assertEquals(false,createdUser.isLdapUser());
Assert.assertEquals(false,createdUser.isAdmin());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveUser() throws Exception {
users.createUser("user1","user1");
users.createUser("user2","user2");
users.createUser("user3","user3");
Assert.assertEquals(3,users.getAllUsers().size());
users.removeUser(users.getAnyUser("user1"));
Assert.assertNull(users.getAnyUser("user1"));
Assert.assertEquals(2,users.getAllUsers().size());
}
UtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testSetGroupLdap() throws Exception {
users.createGroup("group");
users.setGroupLdap("group");
Assert.assertNotNull(users.getGroup("group"));
Assert.assertTrue(users.getGroup("group").isLdapGroup());
try {
users.setGroupLdap("fake group");
Assert.fail("It shouldn't be possible to call setGroupLdap() on non-existing group");
}
catch ( AmbariException ex) {
}
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAllGroups() throws Exception {
users.createGroup("one");
users.createGroup("two");
final List groupList=users.getAllGroups();
assertEquals(2,groupList.size());
assertEquals(2,groupDAO.findAll().size());
}
UtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier HybridVerifier
@Test public void testModifyPassword_UserByHimselfPasswordNotOk() throws Exception {
Authentication auth=new UsernamePasswordAuthenticationToken("user",null);
SecurityContextHolder.getContext().setAuthentication(auth);
users.createUser("user","user");
UserEntity userEntity=userDAO.findUserByName("user");
assertNotSame("user",userEntity.getUserPassword());
assertTrue(passwordEncoder.matches("user",userEntity.getUserPassword()));
try {
users.modifyPassword("user","admin","user_new_password");
Assert.fail("Exception should be thrown here as password is incorrect");
}
catch ( AmbariException ex) {
}
}
InternalCallVerifier BooleanVerifier
@Test public void testIsUserCanBeRemoved() throws Exception {
users.createUser("admin","admin",true,true,false);
users.createUser("admin2","admin2",true,true,false);
Assert.assertTrue(users.isUserCanBeRemoved(userDAO.findUserByName("admin")));
Assert.assertTrue(users.isUserCanBeRemoved(userDAO.findUserByName("admin2")));
users.removeUser(users.getAnyUser("admin"));
Assert.assertFalse(users.isUserCanBeRemoved(userDAO.findUserByName("admin2")));
users.createUser("user","user");
Assert.assertFalse(users.isUserCanBeRemoved(userDAO.findUserByName("admin2")));
users.createUser("admin3","admin3",true,true,false);
Assert.assertTrue(users.isUserCanBeRemoved(userDAO.findUserByName("admin2")));
Assert.assertTrue(users.isUserCanBeRemoved(userDAO.findUserByName("admin3")));
}
InternalCallVerifier BooleanVerifier IdentityVerifier HybridVerifier
@Test public void testModifyPassword_UserByHimselfPasswordOk() throws Exception {
Authentication auth=new UsernamePasswordAuthenticationToken("user",null);
SecurityContextHolder.getContext().setAuthentication(auth);
users.createUser("user","user");
UserEntity userEntity=userDAO.findUserByName("user");
assertNotSame("user",userEntity.getUserPassword());
assertTrue(passwordEncoder.matches("user",userEntity.getUserPassword()));
users.modifyPassword("user","user","user_new_password");
assertTrue(passwordEncoder.matches("user_new_password",userDAO.findUserByName("user").getUserPassword()));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetGroupMembers() throws Exception {
final String groupNameTwoMembers="engineering";
final String groupNameZeroMembers="management";
users.createGroup(groupNameTwoMembers);
users.createGroup(groupNameZeroMembers);
users.createUser("user","user");
users.createUser("admin","admin");
users.addMemberToGroup(groupNameTwoMembers,"user");
users.addMemberToGroup(groupNameTwoMembers,"admin");
assertEquals(users.getGroupMembers(groupNameTwoMembers).size(),2);
assertEquals(users.getGroupMembers(groupNameZeroMembers).size(),0);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetGroup() throws Exception {
final String groupName="engineering";
users.createGroup(groupName);
final Group group=users.getGroup(groupName);
assertNotNull(group);
assertEquals(false,group.isLdapGroup());
assertEquals(groupName,group.getGroupName());
assertNotNull(groupDAO.findGroupByName(groupName));
}
Class: org.apache.ambari.server.security.authorization.jwt.JwtAuthenticationFilterTest InternalCallVerifier EqualityVerifier
@Test public void testGetJWTFromCookie() throws Exception {
HttpServletRequest request=createNiceMock(HttpServletRequest.class);
Cookie cookie=createNiceMock(Cookie.class);
expect(cookie.getName()).andReturn("non-default");
expect(cookie.getValue()).andReturn("stubtokenstring");
expect(request.getCookies()).andReturn(new Cookie[]{cookie});
JwtAuthenticationProperties properties=createTestProperties();
JwtAuthenticationFilter filter=new JwtAuthenticationFilter(properties,null,null);
replay(request,cookie);
String jwtFromCookie=filter.getJWTFromCookie(request);
verify(request,cookie);
assertEquals("stubtokenstring",jwtFromCookie);
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateSignature() throws Exception {
JwtAuthenticationProperties properties=createTestProperties();
JwtAuthenticationFilter filter=new JwtAuthenticationFilter(properties,null,null);
boolean isValid=filter.validateSignature(getSignedToken());
assertEquals(true,isValid);
isValid=filter.validateSignature(getInvalidToken());
assertEquals(false,isValid);
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateAudiences() throws Exception {
JwtAuthenticationProperties properties=createTestProperties();
JwtAuthenticationFilter filter=new JwtAuthenticationFilter(properties,null,null);
boolean isValid=filter.validateAudiences(getSignedToken());
assertEquals(true,isValid);
isValid=filter.validateAudiences(getInvalidToken());
assertEquals(false,isValid);
}
InternalCallVerifier EqualityVerifier
@Test public void testValidateExpiration() throws Exception {
JwtAuthenticationProperties properties=createTestProperties();
JwtAuthenticationFilter filter=new JwtAuthenticationFilter(properties,null,null);
boolean isValid=filter.validateExpiration(getSignedToken());
assertEquals(true,isValid);
isValid=filter.validateExpiration(getInvalidToken());
assertEquals(false,isValid);
}
Class: org.apache.ambari.server.security.encryption.AESEncryptorTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testEncryptionDecryption() throws Exception {
AESEncryptor aes=new AESEncryptor("AESPassPhrase");
String masterKey="Thisisusermasterkey";
EncryptionResult res=aes.encrypt(masterKey.getBytes());
Assert.assertNotNull(res);
Assert.assertNotNull(res.cipher);
Assert.assertNotNull(res.iv);
Assert.assertNotNull(res.salt);
byte[] descryptedKey=aes.decrypt(res.salt,res.iv,res.cipher);
Assert.assertEquals(masterKey,new String(descryptedKey,"UTF8"));
Assert.assertEquals(masterKey.getBytes().length,descryptedKey.length);
Assert.assertEquals(masterKey.getBytes("UTF8").length,new String(descryptedKey,"UTF8").toCharArray().length);
}
InternalCallVerifier EqualityVerifier PublicFieldVerifier
@Test public void testDecryptionWithDiffEncryptors() throws Exception {
AESEncryptor aes1=new AESEncryptor("Test");
AESEncryptor aes2=new AESEncryptor("Test");
EncryptionResult res=aes1.encrypt("mastersecret".getBytes("UTF8"));
byte[] decrypted=aes1.decrypt(res.salt,res.iv,res.cipher);
Assert.assertEquals("mastersecret",new String(decrypted,"UTF8"));
decrypted=aes2.decrypt(res.salt,res.iv,res.cipher);
Assert.assertEquals("mastersecret",new String(decrypted,"UTF8"));
}
Class: org.apache.ambari.server.security.encryption.CredentialProviderTest UtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testInitialization() throws Exception {
CredentialProvider cr;
File msFile=tmpFolder.newFile(Configuration.MASTER_KEY_FILENAME_DEFAULT);
File mksFile=tmpFolder.newFile(Configuration.MASTER_KEYSTORE_FILENAME_DEFAULT);
try {
new CredentialProvider(null,null,true,null);
Assert.fail("Expected an exception");
}
catch ( Throwable t) {
Assert.assertTrue(t instanceof IllegalArgumentException);
}
cr=new CredentialProvider("blahblah!",msFile,false,mksFile);
Assert.assertNotNull(cr);
Assert.assertNotNull(cr.getKeystoreService());
msFile.delete();
mksFile.delete();
createMasterKey();
cr=new CredentialProvider(null,msFile,true,mksFile);
Assert.assertNotNull(cr);
Assert.assertNotNull(cr.getKeystoreService());
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCredentialStore() throws Exception {
File msFile=tmpFolder.newFile(Configuration.MASTER_KEY_FILENAME_DEFAULT);
File mksFile=tmpFolder.newFile(Configuration.MASTER_KEYSTORE_FILENAME_DEFAULT);
createMasterKey();
CredentialProvider cr=new CredentialProvider(null,msFile,true,mksFile);
Assert.assertNotNull(cr);
Assert.assertNotNull(cr.getKeystoreService());
try {
cr.addAliasToCredentialStore("","xyz");
Assert.fail("Expected an exception");
}
catch ( Throwable t) {
Assert.assertTrue(t instanceof IllegalArgumentException);
}
try {
cr.addAliasToCredentialStore("xyz",null);
Assert.fail("Expected an exception");
}
catch ( Throwable t) {
Assert.assertTrue(t instanceof IllegalArgumentException);
}
cr.addAliasToCredentialStore("myalias","mypassword");
Assert.assertEquals("mypassword",new String(cr.getPasswordForAlias("myalias")));
}
Class: org.apache.ambari.server.security.encryption.CredentialStoreServiceImplTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCredential_Persisted() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test2",credential2,CredentialStoreType.PERSISTED);
credentialStoreService.removeCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY);
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
credentialStoreService.removeCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED);
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
Assert.assertEquals(credential2,credentialStoreService.getCredential(CLUSTER_NAME,"test2"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetAndGetCredential_Temporary() throws Exception {
PrincipalKeyCredential credential=new PrincipalKeyCredential("username","password");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential,CredentialStoreType.TEMPORARY);
Assert.assertEquals(credential,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertEquals(credential,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testListCredentials() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
PrincipalKeyCredential credential3=new PrincipalKeyCredential("username3","password3");
PrincipalKeyCredential credential4=new PrincipalKeyCredential("username4","password4");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test2",credential2,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test3",credential3,CredentialStoreType.TEMPORARY);
credentialStoreService.setCredential(CLUSTER_NAME,"test4",credential4,CredentialStoreType.TEMPORARY);
Map credentials=credentialStoreService.listCredentials(CLUSTER_NAME);
Assert.assertNotNull(credentials);
Assert.assertEquals(4,credentials.size());
Assert.assertEquals(CredentialStoreType.PERSISTED,credentials.get("test1"));
Assert.assertEquals(CredentialStoreType.PERSISTED,credentials.get("test2"));
Assert.assertEquals(CredentialStoreType.TEMPORARY,credentials.get("test3"));
Assert.assertEquals(CredentialStoreType.TEMPORARY,credentials.get("test4"));
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testIsCredentialPersisted() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
PrincipalKeyCredential credential3=new PrincipalKeyCredential("username3","password3");
PrincipalKeyCredential credential4=new PrincipalKeyCredential("username4","password4");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test2",credential2,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test3",credential3,CredentialStoreType.TEMPORARY);
credentialStoreService.setCredential(CLUSTER_NAME,"test4",credential4,CredentialStoreType.TEMPORARY);
Assert.assertEquals(CredentialStoreType.PERSISTED,credentialStoreService.getCredentialStoreType(CLUSTER_NAME,"test1"));
Assert.assertEquals(CredentialStoreType.PERSISTED,credentialStoreService.getCredentialStoreType(CLUSTER_NAME,"test2"));
Assert.assertEquals(CredentialStoreType.TEMPORARY,credentialStoreService.getCredentialStoreType(CLUSTER_NAME,"test3"));
Assert.assertEquals(CredentialStoreType.TEMPORARY,credentialStoreService.getCredentialStoreType(CLUSTER_NAME,"test4"));
try {
credentialStoreService.getCredentialStoreType(CLUSTER_NAME,"test5");
Assert.fail("Expected AmbariException to be thrown");
}
catch ( AmbariException e) {
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCredential_Either() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
PrincipalKeyCredential credential3=new PrincipalKeyCredential("username3","password3");
PrincipalKeyCredential credential4=new PrincipalKeyCredential("username4","password4");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test2",credential2,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test3",credential3,CredentialStoreType.TEMPORARY);
credentialStoreService.setCredential(CLUSTER_NAME,"test4",credential4,CredentialStoreType.TEMPORARY);
credentialStoreService.removeCredential(CLUSTER_NAME,"test1");
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
Assert.assertEquals(credential2,credentialStoreService.getCredential(CLUSTER_NAME,"test2"));
Assert.assertEquals(credential3,credentialStoreService.getCredential(CLUSTER_NAME,"test3"));
Assert.assertEquals(credential4,credentialStoreService.getCredential(CLUSTER_NAME,"test4"));
credentialStoreService.removeCredential(CLUSTER_NAME,"test3");
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
Assert.assertEquals(credential2,credentialStoreService.getCredential(CLUSTER_NAME,"test2"));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test3"));
Assert.assertEquals(credential4,credentialStoreService.getCredential(CLUSTER_NAME,"test4"));
}
TestInitializer InternalCallVerifier BooleanVerifier HybridVerifier
@Before public void setUp() throws Exception {
tmpFolder.create();
final File masterKeyFile=tmpFolder.newFile(Configuration.MASTER_KEY_FILENAME_DEFAULT);
Assert.assertTrue(MasterKeyServiceImpl.initializeMasterKeyFile(masterKeyFile,"secret"));
Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
Properties properties=new Properties();
properties.setProperty(Configuration.MASTER_KEY_LOCATION,tmpFolder.getRoot().getAbsolutePath());
properties.setProperty(Configuration.MASTER_KEYSTORE_LOCATION,tmpFolder.getRoot().getAbsolutePath());
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
bind(SecurePasswordHelper.class).toInstance(new SecurePasswordHelper());
bind(Configuration.class).toInstance(new Configuration(properties));
}
}
);
MasterKeyService masterKeyService=new MasterKeyServiceImpl(masterKeyFile);
Assert.assertTrue(masterKeyService.isMasterKeyInitialized());
credentialStoreService=injector.getInstance(CredentialStoreServiceImpl.class);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateCredential() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.PERSISTED);
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.TEMPORARY);
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential2,CredentialStoreType.PERSISTED);
Assert.assertEquals(credential2,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertEquals(credential2,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveCredential_Temporary() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.TEMPORARY);
credentialStoreService.setCredential(CLUSTER_NAME,"test2",credential2,CredentialStoreType.TEMPORARY);
credentialStoreService.removeCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED);
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertEquals(credential1,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
credentialStoreService.removeCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY);
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
Assert.assertEquals(credential2,credentialStoreService.getCredential(CLUSTER_NAME,"test2"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetAndGetCredential_Persisted() throws Exception {
PrincipalKeyCredential credential=new PrincipalKeyCredential("username","password");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential,CredentialStoreType.PERSISTED);
Assert.assertEquals(credential,credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertEquals(credential,credentialStoreService.getCredential(CLUSTER_NAME,"test1"));
Assert.assertNull(credentialStoreService.getCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
}
InternalCallVerifier BooleanVerifier
@Test public void testContainsCredential() throws Exception {
PrincipalKeyCredential credential1=new PrincipalKeyCredential("username1","password1");
PrincipalKeyCredential credential2=new PrincipalKeyCredential("username2","password2");
PrincipalKeyCredential credential3=new PrincipalKeyCredential("username3","password3");
PrincipalKeyCredential credential4=new PrincipalKeyCredential("username4","password4");
credentialStoreService.setCredential(CLUSTER_NAME,"test1",credential1,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test2",credential2,CredentialStoreType.PERSISTED);
credentialStoreService.setCredential(CLUSTER_NAME,"test3",credential3,CredentialStoreType.TEMPORARY);
credentialStoreService.setCredential(CLUSTER_NAME,"test4",credential4,CredentialStoreType.TEMPORARY);
Assert.assertTrue(credentialStoreService.containsCredential(CLUSTER_NAME,"test1",CredentialStoreType.PERSISTED));
Assert.assertFalse(credentialStoreService.containsCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertFalse(credentialStoreService.containsCredential(CLUSTER_NAME,"test3",CredentialStoreType.PERSISTED));
Assert.assertFalse(credentialStoreService.containsCredential(CLUSTER_NAME,"test1",CredentialStoreType.TEMPORARY));
Assert.assertFalse(credentialStoreService.containsCredential(CLUSTER_NAME,"test3",CredentialStoreType.PERSISTED));
Assert.assertTrue(credentialStoreService.containsCredential(CLUSTER_NAME,"test3",CredentialStoreType.TEMPORARY));
Assert.assertTrue(credentialStoreService.containsCredential(CLUSTER_NAME,"test1"));
Assert.assertTrue(credentialStoreService.containsCredential(CLUSTER_NAME,"test3"));
}
Class: org.apache.ambari.server.security.encryption.MasterKeyServiceTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testInitializeMasterKey() throws Exception {
File masterKeyFile=new File(fileDir,"master");
Assert.assertTrue(MasterKeyServiceImpl.initializeMasterKeyFile(masterKeyFile,"ThisisSomePassPhrase"));
MasterKeyService ms=new MasterKeyServiceImpl(masterKeyFile);
Assert.assertTrue(ms.isMasterKeyInitialized());
Assert.assertTrue(masterKeyFile.exists());
Set permissions=Files.getPosixFilePermissions(Paths.get(masterKeyFile.getAbsolutePath()));
Assert.assertNotNull(permissions);
Assert.assertEquals(2,permissions.size());
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_READ));
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OWNER_EXECUTE));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_READ));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_EXECUTE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_READ));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_EXECUTE));
MasterKeyService ms1=new MasterKeyServiceImpl(masterKeyFile);
Assert.assertTrue(ms1.isMasterKeyInitialized());
Assert.assertEquals("ThisisSomePassPhrase",new String(ms1.getMasterSecret()));
Assert.assertEquals(new String(ms.getMasterSecret()),new String(ms1.getMasterSecret()));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadFromEnvAsKey() throws Exception {
Map mapRet=new HashMap();
mapRet.put(Configuration.MASTER_KEY_ENV_PROP,"ThisisSomePassPhrase");
mockStatic(System.class);
expect(System.getenv()).andReturn(mapRet);
replayAll();
MasterKeyService ms=new MasterKeyServiceImpl();
verifyAll();
Assert.assertTrue(ms.isMasterKeyInitialized());
Assert.assertNotNull(ms.getMasterSecret());
Assert.assertEquals("ThisisSomePassPhrase",new String(ms.getMasterSecret()));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadFromEnvAsPath() throws Exception {
File masterKeyFile=new File(fileDir,"master");
Assert.assertTrue(MasterKeyServiceImpl.initializeMasterKeyFile(masterKeyFile,"ThisisSomePassPhrase"));
MasterKeyService ms=new MasterKeyServiceImpl(masterKeyFile);
Assert.assertTrue(ms.isMasterKeyInitialized());
Assert.assertTrue(masterKeyFile.exists());
Map mapRet=new HashMap();
mapRet.put(Configuration.MASTER_KEY_LOCATION,masterKeyFile.getAbsolutePath());
mockStatic(System.class);
expect(System.getenv()).andReturn(mapRet);
replayAll();
ms=new MasterKeyServiceImpl();
verifyAll();
Assert.assertTrue(ms.isMasterKeyInitialized());
Assert.assertNotNull(ms.getMasterSecret());
Assert.assertEquals("ThisisSomePassPhrase",new String(ms.getMasterSecret()));
Assert.assertFalse(masterKeyFile.exists());
}
Class: org.apache.ambari.server.security.ldap.AmbariLdapDataPopulatorTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapGroups_remove() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
Group group4=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group4.getGroupName()).andReturn("group4").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group3.isLdapGroup()).andReturn(true).anyTimes();
expect(group4.isLdapGroup()).andReturn(true).anyTimes();
List groupList=Arrays.asList(group1,group2,group3,group4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3,group4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("refreshGroupMembers").addMockedMethod("getExternalLdapGroupInfo").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group3").anyTimes();
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup1);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
expect(populator.getExternalLdapGroupInfo()).andReturn(externalGroups);
replay(populator);
replay(externalGroup1);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapGroups(batchInfo);
assertEquals(2,result.getGroupsToBeRemoved().size());
assertTrue(result.getGroupsToBeRemoved().contains("group2"));
assertTrue(result.getGroupsToBeRemoved().contains("group4"));
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRefreshGroupMembers() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
User user4=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user3.getUserName()).andReturn("user3").anyTimes();
expect(user4.getUserName()).andReturn("user4").anyTimes();
expect(user1.isLdapUser()).andReturn(false).anyTimes();
expect(user2.isLdapUser()).andReturn(true).anyTimes();
expect(user3.isLdapUser()).andReturn(true).anyTimes();
expect(user4.isLdapUser()).andReturn(false).anyTimes();
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
expect(group1.isLdapGroup()).andReturn(true).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(ldapServerProperties.getGroupNamingAttr()).andReturn("cn").anyTimes();
expect(ldapServerProperties.getUsernameAttribute()).andReturn("uid").anyTimes();
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3,user4);
replay(group1,group2);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapUserByMemberAttr").addMockedMethod("getLdapGroupByMemberAttr").addMockedMethod("getInternalMembers").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup=createNiceMock(LdapGroupDto.class);
expect(externalGroup.getGroupName()).andReturn("group1").anyTimes();
expect(externalGroup.getMemberAttributes()).andReturn(createSet("user1","user2","user4","user6")).anyTimes();
replay(externalGroup);
Map internalMembers=new HashMap();
internalMembers.put("user1",user1);
internalMembers.put("user3",user3);
internalMembers.put("user4",user4);
LdapBatchDto batchInfo=new LdapBatchDto();
LdapUserDto externalUser1=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser3=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser4=createNiceMock(LdapUserDto.class);
expect(externalUser1.getUserName()).andReturn("user1").anyTimes();
expect(externalUser2.getUserName()).andReturn("user2").anyTimes();
expect(externalUser3.getUserName()).andReturn("user4").anyTimes();
expect(externalUser4.getUserName()).andReturn("user6").anyTimes();
replay(externalUser1,externalUser2,externalUser3,externalUser4);
expect(populator.getLdapUserByMemberAttr("user1")).andReturn(externalUser1).anyTimes();
expect(populator.getLdapUserByMemberAttr("user2")).andReturn(externalUser2).anyTimes();
expect(populator.getLdapUserByMemberAttr("user4")).andReturn(null).anyTimes();
expect(populator.getLdapGroupByMemberAttr("user4")).andReturn(externalGroup).anyTimes();
expect(populator.getLdapUserByMemberAttr("user6")).andReturn(externalUser4).anyTimes();
expect(populator.getInternalMembers("group1")).andReturn(internalMembers).anyTimes();
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
Map internalUsers=new HashMap();
internalUsers.putAll(internalMembers);
internalUsers.put("user2",user2);
Map internalGroups=new HashMap();
internalGroups.put("group2",group2);
populator.refreshGroupMembers(batchInfo,externalGroup,internalUsers,internalGroups,null);
Set groupMembersToAdd=new HashSet();
for ( LdapUserGroupMemberDto ldapUserGroupMemberDto : batchInfo.getMembershipToAdd()) {
groupMembersToAdd.add(ldapUserGroupMemberDto.getUserName());
}
assertEquals(3,groupMembersToAdd.size());
assertTrue(groupMembersToAdd.contains("user2"));
assertTrue(groupMembersToAdd.contains("user6"));
Set groupMembersToRemove=new HashSet();
for ( LdapUserGroupMemberDto ldapUserGroupMemberDto : batchInfo.getMembershipToRemove()) {
groupMembersToRemove.add(ldapUserGroupMemberDto.getUserName());
}
assertEquals(2,groupMembersToRemove.size());
assertTrue(groupMembersToRemove.contains("user3"));
assertEquals(1,batchInfo.getUsersToBeCreated().size());
assertTrue(batchInfo.getUsersToBeCreated().contains("user6"));
assertEquals(1,batchInfo.getUsersToBecomeLdap().size());
assertTrue(batchInfo.getUsersToBecomeLdap().contains("user1"));
assertTrue(!batchInfo.getUsersToBecomeLdap().contains("user4"));
assertTrue(batchInfo.getGroupsToBecomeLdap().isEmpty());
assertEquals(1,batchInfo.getGroupsToBeCreated().size());
assertTrue(batchInfo.getGroupsToBeRemoved().isEmpty());
assertTrue(batchInfo.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
InternalCallVerifier NullVerifier
@Test public void testLdapUserContextMapper_uidAndUsernameAreNull() throws Exception {
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(ldapServerProperties.getUsernameAttribute()).andReturn("cn").once();
DirContextAdapter adapter=createNiceMock(DirContextAdapter.class);
expect(adapter.getStringAttribute("cn")).andReturn(null);
expect(adapter.getStringAttribute("uid")).andReturn(null);
replay(ldapServerProperties,adapter);
AmbariLdapDataPopulator.LdapUserContextMapper ldapUserContextMapper=new AmbariLdapDataPopulator.LdapUserContextMapper(ldapServerProperties);
assertNull(ldapUserContextMapper.mapFromContext(adapter));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeLdapGroups_update() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
Group group4=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group4.getGroupName()).andReturn("group4").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group3.isLdapGroup()).andReturn(true).anyTimes();
expect(group4.isLdapGroup()).andReturn(false).anyTimes();
List groupList=Arrays.asList(group1,group2,group3,group4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3,group4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapGroups").addMockedMethod("refreshGroupMembers").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup2=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup3=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup4=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group1").anyTimes();
expect(externalGroup2.getGroupName()).andReturn("group2").anyTimes();
expect(externalGroup3.getGroupName()).andReturn("group3").anyTimes();
expect(externalGroup4.getGroupName()).andReturn("group4").anyTimes();
replay(externalGroup1,externalGroup2,externalGroup3,externalGroup4);
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup1,externalGroup2,externalGroup3,externalGroup4);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
expect(populator.getLdapGroups("group*")).andReturn(externalGroups);
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeLdapGroups(createSet("group*"),batchInfo);
assertEquals(2,result.getGroupsToBecomeLdap().size());
assertTrue(result.getGroupsToBecomeLdap().contains("group1"));
assertTrue(result.getGroupsToBecomeLdap().contains("group4"));
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapUsers_remove() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user3.getUserName()).andReturn("user3").anyTimes();
expect(user1.isLdapUser()).andReturn(true).anyTimes();
expect(user2.isLdapUser()).andReturn(false).anyTimes();
expect(user3.isLdapUser()).andReturn(true).anyTimes();
List userList=Arrays.asList(user1,user2,user3);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getExternalLdapUserInfo").withConstructor(configuration,users).createNiceMock();
expect(populator.getExternalLdapUserInfo()).andReturn(Collections.EMPTY_SET);
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapUsers(new LdapBatchDto());
assertEquals(2,result.getUsersToBeRemoved().size());
assertTrue(result.getUsersToBeRemoved().contains("user3"));
assertTrue(result.getUsersToBeRemoved().contains("user1"));
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapUsers_add() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user1.isLdapUser()).andReturn(false).anyTimes();
expect(user2.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getExternalLdapUserInfo").withConstructor(configuration,users).createNiceMock();
LdapUserDto externalUser1=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
expect(externalUser1.getUserName()).andReturn("user3").anyTimes();
expect(externalUser2.getUserName()).andReturn("user4").anyTimes();
replay(externalUser1,externalUser2);
expect(populator.getExternalLdapUserInfo()).andReturn(createSet(externalUser1,externalUser2));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapUsers(new LdapBatchDto());
assertEquals(2,result.getUsersToBeCreated().size());
assertTrue(result.getUsersToBeCreated().contains("user3"));
assertTrue(result.getUsersToBeCreated().contains("user4"));
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsLdapEnabled_reallyDisabled(){
final Configuration configuration=createNiceMock(Configuration.class);
final Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(configuration.isLdapConfigured()).andReturn(false);
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties);
replay(ldapTemplate,ldapServerProperties,configuration);
final AmbariLdapDataPopulatorTestInstance populator=new AmbariLdapDataPopulatorTestInstance(configuration,users);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
assertFalse(populator.isLdapEnabled());
verify(populator.loadLdapTemplate(),populator.getLdapServerProperties(),configuration);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test @SuppressWarnings("serial") public void testCleanUpLdapUsersWithoutGroup() throws AmbariException {
final Configuration configuration=createNiceMock(Configuration.class);
final Users users=createNiceMock(Users.class);
final GroupEntity ldapGroup=new GroupEntity();
ldapGroup.setGroupId(1);
ldapGroup.setGroupName("ldapGroup");
ldapGroup.setLdapGroup(true);
ldapGroup.setMemberEntities(new HashSet());
final User ldapUserWithoutGroup=createLdapUserWithoutGroup();
final User ldapUserWithGroup=createLdapUserWithGroup(ldapGroup);
final User localUserWithoutGroup=createLocalUserWithoutGroup();
final User localUserWithGroup=createLocalUserWithGroup(ldapGroup);
final List allUsers=new ArrayList(){
{
add(ldapUserWithoutGroup);
add(ldapUserWithGroup);
add(localUserWithoutGroup);
add(localUserWithGroup);
}
}
;
expect(users.getAllUsers()).andReturn(new ArrayList(allUsers));
final List removedUsers=new ArrayList();
final Capture userCapture=new Capture();
users.removeUser(capture(userCapture));
expectLastCall().andAnswer(new IAnswer(){
@Override public Void answer() throws Throwable {
removedUsers.add(userCapture.getValue());
allUsers.remove(userCapture.getValue());
return null;
}
}
);
replay(users);
final AmbariLdapDataPopulatorTestInstance populator=new AmbariLdapDataPopulatorTestInstance(configuration,users);
populator.setLdapTemplate(createNiceMock(LdapTemplate.class));
populator.setLdapServerProperties(createNiceMock(LdapServerProperties.class));
populator.cleanUpLdapUsersWithoutGroup();
assertEquals(removedUsers.size(),1);
assertEquals(allUsers.size(),3);
assertTrue(allUsers.contains(ldapUserWithGroup));
assertTrue(allUsers.contains(localUserWithoutGroup));
assertTrue(allUsers.contains(localUserWithGroup));
assertEquals(removedUsers.get(0),ldapUserWithoutGroup);
verify(users);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapGroups_add() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(false).anyTimes();
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(Arrays.asList(group1,group2));
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("refreshGroupMembers").addMockedMethod("getExternalLdapGroupInfo").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup2=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group4").anyTimes();
expect(externalGroup2.getGroupName()).andReturn("group3").anyTimes();
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup1,externalGroup2);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
expect(populator.getExternalLdapGroupInfo()).andReturn(externalGroups);
replay(externalGroup1,externalGroup2);
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapGroups(batchInfo);
assertEquals(2,result.getGroupsToBeCreated().size());
assertTrue(result.getGroupsToBeCreated().contains("group3"));
assertTrue(result.getGroupsToBeCreated().contains("group4"));
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeLdapUsers_add() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
User user4=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user3.getUserName()).andReturn("user5").anyTimes();
expect(user4.getUserName()).andReturn("user6").anyTimes();
expect(user1.isLdapUser()).andReturn(false).anyTimes();
expect(user2.isLdapUser()).andReturn(true).anyTimes();
expect(user3.isLdapUser()).andReturn(true).anyTimes();
expect(user4.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2,user3,user4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3,user4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapUsers").withConstructor(configuration,users).createNiceMock();
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser3=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser4=createNiceMock(LdapUserDto.class);
expect(externalUser2.getUserName()).andReturn("user2").anyTimes();
expect(externalUser3.getUserName()).andReturn("xuser3").anyTimes();
expect(externalUser4.getUserName()).andReturn("xuser4").anyTimes();
replay(externalUser2,externalUser3,externalUser4);
expect(populator.getLdapUsers("xuser*")).andReturn(createSet(externalUser3,externalUser4));
expect(populator.getLdapUsers("user2")).andReturn(Collections.singleton(externalUser2));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeLdapUsers(createSet("user2","xuser*"),new LdapBatchDto());
assertEquals(2,result.getUsersToBeCreated().size());
assertTrue(result.getUsersToBeCreated().contains("xuser3"));
assertTrue(result.getUsersToBeCreated().contains("xuser4"));
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapUsers() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
User user4=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("synced_user1").anyTimes();
expect(user2.getUserName()).andReturn("synced_user2").anyTimes();
expect(user3.getUserName()).andReturn("unsynced_user1").anyTimes();
expect(user4.getUserName()).andReturn("unsynced_user2").anyTimes();
expect(user1.isLdapUser()).andReturn(true).anyTimes();
expect(user2.isLdapUser()).andReturn(true).anyTimes();
expect(user3.isLdapUser()).andReturn(false).anyTimes();
expect(user4.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2,user3,user4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user3,user2,user4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getExternalLdapUserInfo").withConstructor(configuration,users).createNiceMock();
LdapUserDto externalUser1=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser3=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser4=createNiceMock(LdapUserDto.class);
expect(externalUser1.getUserName()).andReturn("synced_user2").anyTimes();
expect(externalUser2.getUserName()).andReturn("unsynced_user2").anyTimes();
expect(externalUser3.getUserName()).andReturn("external_user1").anyTimes();
expect(externalUser4.getUserName()).andReturn("external_user2").anyTimes();
replay(externalUser1,externalUser2,externalUser3,externalUser4);
expect(populator.getExternalLdapUserInfo()).andReturn(createSet(externalUser1,externalUser2,externalUser3,externalUser4));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapUsers(new LdapBatchDto());
assertEquals(1,result.getUsersToBeRemoved().size());
assertTrue(result.getUsersToBeRemoved().contains("synced_user1"));
assertEquals(2,result.getUsersToBeCreated().size());
assertTrue(result.getUsersToBeCreated().contains("external_user1"));
assertTrue(result.getUsersToBeCreated().contains("external_user2"));
assertEquals(1,result.getUsersToBecomeLdap().size());
assertTrue(result.getUsersToBecomeLdap().contains("unsynced_user2"));
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeLdapGroups_add() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
Group group4=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group4.getGroupName()).andReturn("group4").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group3.isLdapGroup()).andReturn(true).anyTimes();
expect(group4.isLdapGroup()).andReturn(false).anyTimes();
List groupList=Arrays.asList(group1,group2,group3,group4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3,group4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapGroups").addMockedMethod("refreshGroupMembers").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup2=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup3=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup4=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group1").anyTimes();
expect(externalGroup2.getGroupName()).andReturn("group2").anyTimes();
expect(externalGroup3.getGroupName()).andReturn("xgroup1").anyTimes();
expect(externalGroup4.getGroupName()).andReturn("xgroup2").anyTimes();
replay(externalGroup1,externalGroup2,externalGroup3,externalGroup4);
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup3,externalGroup4);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup2),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
expect(populator.getLdapGroups("x*")).andReturn(externalGroups);
expect(populator.getLdapGroups("group2")).andReturn(Collections.singleton(externalGroup2));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeLdapGroups(createSet("x*","group2"),batchInfo);
assertEquals(2,result.getGroupsToBeCreated().size());
assertTrue(result.getGroupsToBeCreated().contains("xgroup1"));
assertTrue(result.getGroupsToBeCreated().contains("xgroup2"));
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsLdapEnabled_reallyEnabled(){
final Configuration configuration=createNiceMock(Configuration.class);
final Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(configuration.isLdapConfigured()).andReturn(true);
expect(ldapTemplate.search(EasyMock.anyObject(),EasyMock.anyObject(),EasyMock.anyObject())).andReturn(Collections.emptyList()).once();
replay(ldapTemplate,configuration);
final AmbariLdapDataPopulatorTestInstance populator=new AmbariLdapDataPopulatorTestInstance(configuration,users);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
assertTrue(populator.isLdapEnabled());
verify(populator.loadLdapTemplate(),configuration);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeExistingLdapUsers() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
User user4=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("synced_user1").anyTimes();
expect(user2.getUserName()).andReturn("synced_user2").anyTimes();
expect(user3.getUserName()).andReturn("unsynced_user1").anyTimes();
expect(user4.getUserName()).andReturn("unsynced_user2").anyTimes();
expect(user1.isLdapUser()).andReturn(true).anyTimes();
expect(user2.isLdapUser()).andReturn(true).anyTimes();
expect(user3.isLdapUser()).andReturn(false).anyTimes();
expect(user4.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2,user3,user4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3,user4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapUsers").withConstructor(configuration,users).createNiceMock();
expect(populator.getLdapUsers("synced_user1")).andReturn(Collections.EMPTY_SET);
expect(populator.getLdapUsers("synced_user2")).andReturn(Collections.singleton(createNiceMock(LdapUserDto.class)));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeExistingLdapUsers(new LdapBatchDto());
assertEquals(1,result.getUsersToBeRemoved().size());
assertTrue(result.getUsersToBeRemoved().contains("synced_user1"));
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapUsers_update() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user3.getUserName()).andReturn("user3").anyTimes();
expect(user1.isLdapUser()).andReturn(true).anyTimes();
expect(user2.isLdapUser()).andReturn(false).anyTimes();
expect(user3.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2,user3);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getExternalLdapUserInfo").withConstructor(configuration,users).createNiceMock();
LdapUserDto externalUser1=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
expect(externalUser1.getUserName()).andReturn("user1").anyTimes();
expect(externalUser2.getUserName()).andReturn("user3").anyTimes();
replay(externalUser1,externalUser2);
expect(populator.getExternalLdapUserInfo()).andReturn(createSet(externalUser1,externalUser2));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapUsers(new LdapBatchDto());
assertEquals(1,result.getUsersToBecomeLdap().size());
assertTrue(result.getUsersToBecomeLdap().contains("user3"));
assertTrue(result.getUsersToBeRemoved().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeLdapUsers_allExist() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
User user4=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user3.getUserName()).andReturn("user5").anyTimes();
expect(user4.getUserName()).andReturn("user6").anyTimes();
expect(user1.isLdapUser()).andReturn(false).anyTimes();
expect(user2.isLdapUser()).andReturn(true).anyTimes();
expect(user3.isLdapUser()).andReturn(true).anyTimes();
expect(user4.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2,user3,user4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3,user4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapUsers").withConstructor(configuration,users).createNiceMock();
LdapUserDto externalUser1=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser3=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser4=createNiceMock(LdapUserDto.class);
expect(externalUser1.getUserName()).andReturn("user1").anyTimes();
expect(externalUser2.getUserName()).andReturn("user2").anyTimes();
expect(externalUser3.getUserName()).andReturn("xuser3").anyTimes();
expect(externalUser4.getUserName()).andReturn("xuser4").anyTimes();
replay(externalUser1,externalUser2,externalUser3,externalUser4);
expect(populator.getLdapUsers("xuser*")).andReturn(createSet(externalUser3,externalUser4));
expect(populator.getLdapUsers("user1")).andReturn(Collections.singleton(externalUser1));
expect(populator.getLdapUsers("user2")).andReturn(Collections.singleton(externalUser2));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeLdapUsers(createSet("user1","user2","xuser*"),new LdapBatchDto());
assertEquals(2,result.getUsersToBeCreated().size());
assertTrue(result.getUsersToBeCreated().contains("xuser3"));
assertTrue(result.getUsersToBeCreated().contains("xuser4"));
assertEquals(1,result.getUsersToBecomeLdap().size());
assertTrue(result.getUsersToBecomeLdap().contains("user1"));
assertTrue(result.getUsersToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapGroups() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
Group group4=createNiceMock(Group.class);
Group group5=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group4.getGroupName()).andReturn("group4").anyTimes();
expect(group5.getGroupName()).andReturn("group5").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group3.isLdapGroup()).andReturn(false).anyTimes();
expect(group4.isLdapGroup()).andReturn(true).anyTimes();
expect(group5.isLdapGroup()).andReturn(false).anyTimes();
List groupList=Arrays.asList(group1,group2,group3,group4,group5);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3,group4,group5);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getExternalLdapGroupInfo").addMockedMethod("refreshGroupMembers").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup2=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup3=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup4=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group4").anyTimes();
expect(externalGroup2.getGroupName()).andReturn("group3").anyTimes();
expect(externalGroup3.getGroupName()).andReturn("group6").anyTimes();
expect(externalGroup4.getGroupName()).andReturn("group7").anyTimes();
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup1,externalGroup2,externalGroup3,externalGroup4);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
expect(populator.getExternalLdapGroupInfo()).andReturn(externalGroups);
replay(externalGroup1,externalGroup2,externalGroup3,externalGroup4);
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapGroups(batchInfo);
assertEquals(1,result.getGroupsToBeRemoved().size());
assertTrue(result.getGroupsToBeRemoved().contains("group2"));
assertEquals(1,result.getGroupsToBecomeLdap().size());
assertTrue(result.getGroupsToBecomeLdap().contains("group3"));
assertEquals(2,result.getGroupsToBeCreated().size());
assertTrue(result.getGroupsToBeCreated().contains("group6"));
assertTrue(result.getGroupsToBeCreated().contains("group7"));
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeAllLdapGroups_update() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(false).anyTimes();
expect(group3.isLdapGroup()).andReturn(false).anyTimes();
List groupList=Arrays.asList(group1,group2,group3);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("refreshGroupMembers").addMockedMethod("getExternalLdapGroupInfo").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup2=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group2").anyTimes();
expect(externalGroup2.getGroupName()).andReturn("group3").anyTimes();
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup1,externalGroup2);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
expect(populator.getExternalLdapGroupInfo()).andReturn(externalGroups);
replay(populator);
replay(externalGroup1,externalGroup2);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeAllLdapGroups(batchInfo);
assertEquals(2,result.getGroupsToBecomeLdap().size());
assertTrue(result.getGroupsToBecomeLdap().contains("group2"));
assertTrue(result.getGroupsToBecomeLdap().contains("group3"));
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void synchronizeExistingLdapGroups() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
Group group4=createNiceMock(Group.class);
Group group5=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group4.getGroupName()).andReturn("group4").anyTimes();
expect(group5.getGroupName()).andReturn("group5").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group3.isLdapGroup()).andReturn(false).anyTimes();
expect(group4.isLdapGroup()).andReturn(true).anyTimes();
expect(group5.isLdapGroup()).andReturn(true).anyTimes();
List groupList=Arrays.asList(group1,group2,group3,group4,group5);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3,group4,group5);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapGroups").addMockedMethod("refreshGroupMembers").withConstructor(configuration,users).createNiceMock();
expect(populator.getLdapGroups("group2")).andReturn(Collections.EMPTY_SET);
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapBatchDto batchInfo=new LdapBatchDto();
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup1),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
expect(populator.getLdapGroups("group4")).andReturn(Collections.singleton(externalGroup1));
expect(populator.getLdapGroups("group5")).andReturn(Collections.EMPTY_SET);
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeExistingLdapGroups(batchInfo);
assertEquals(2,result.getGroupsToBeRemoved().size());
assertTrue(result.getGroupsToBeRemoved().contains("group2"));
assertTrue(result.getGroupsToBeRemoved().contains("group5"));
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeLdapGroups_allExist() throws Exception {
Group group1=createNiceMock(Group.class);
Group group2=createNiceMock(Group.class);
Group group3=createNiceMock(Group.class);
Group group4=createNiceMock(Group.class);
expect(group1.getGroupName()).andReturn("group1").anyTimes();
expect(group2.getGroupName()).andReturn("group2").anyTimes();
expect(group3.getGroupName()).andReturn("group3").anyTimes();
expect(group4.getGroupName()).andReturn("group4").anyTimes();
expect(group1.isLdapGroup()).andReturn(false).anyTimes();
expect(group2.isLdapGroup()).andReturn(true).anyTimes();
expect(group3.isLdapGroup()).andReturn(true).anyTimes();
expect(group4.isLdapGroup()).andReturn(false).anyTimes();
List groupList=Arrays.asList(group1,group2,group3,group4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllGroups()).andReturn(groupList);
expect(users.getAllUsers()).andReturn(Collections.EMPTY_LIST);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(group1,group2,group3,group4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapGroups").addMockedMethod("refreshGroupMembers").withConstructor(configuration,users).createNiceMock();
LdapGroupDto externalGroup1=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup2=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup3=createNiceMock(LdapGroupDto.class);
LdapGroupDto externalGroup4=createNiceMock(LdapGroupDto.class);
expect(externalGroup1.getGroupName()).andReturn("group1").anyTimes();
expect(externalGroup2.getGroupName()).andReturn("group2").anyTimes();
expect(externalGroup3.getGroupName()).andReturn("xgroup1").anyTimes();
expect(externalGroup4.getGroupName()).andReturn("xgroup2").anyTimes();
replay(externalGroup1,externalGroup2,externalGroup3,externalGroup4);
LdapBatchDto batchInfo=new LdapBatchDto();
Set externalGroups=createSet(externalGroup3,externalGroup4);
for ( LdapGroupDto externalGroup : externalGroups) {
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
}
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup1),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
populator.refreshGroupMembers(eq(batchInfo),eq(externalGroup2),anyObject(Map.class),anyObject(Map.class),anyObject(Set.class));
expectLastCall();
expect(populator.getLdapGroups("x*")).andReturn(externalGroups);
expect(populator.getLdapGroups("group1")).andReturn(Collections.singleton(externalGroup1));
expect(populator.getLdapGroups("group2")).andReturn(Collections.singleton(externalGroup2));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeLdapGroups(createSet("x*","group1","group2"),batchInfo);
assertEquals(1,result.getGroupsToBecomeLdap().size());
assertTrue(result.getGroupsToBecomeLdap().contains("group1"));
assertEquals(2,result.getGroupsToBeCreated().size());
assertTrue(result.getGroupsToBeCreated().contains("xgroup1"));
assertTrue(result.getGroupsToBeCreated().contains("xgroup2"));
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
assertTrue(result.getUsersToBecomeLdap().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testLdapUserContextMapper_uidIsNull() throws Exception {
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(ldapServerProperties.getUsernameAttribute()).andReturn("cn").once();
DirContextAdapter adapter=createNiceMock(DirContextAdapter.class);
expect(adapter.getStringAttribute("cn")).andReturn("testUser");
expect(adapter.getStringAttribute("uid")).andReturn(null);
expect(adapter.getNameInNamespace()).andReturn("cn=testUser,ou=Ambari,dc=SME,dc=support,dc=com");
replay(ldapServerProperties,adapter);
AmbariLdapDataPopulator.LdapUserContextMapper ldapUserContextMapper=new AmbariLdapDataPopulator.LdapUserContextMapper(ldapServerProperties);
LdapUserDto userDto=(LdapUserDto)ldapUserContextMapper.mapFromContext(adapter);
assertNotNull(userDto);
assertNull(userDto.getUid());
assertEquals("testuser",userDto.getUserName());
assertEquals("cn=testuser,ou=ambari,dc=sme,dc=support,dc=com",userDto.getDn());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testLdapUserContextMapper() throws Exception {
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(ldapServerProperties.getUsernameAttribute()).andReturn("cn").once();
DirContextAdapter adapter=createNiceMock(DirContextAdapter.class);
expect(adapter.getStringAttribute("cn")).andReturn("testUser");
expect(adapter.getStringAttribute("uid")).andReturn("UID1");
expect(adapter.getNameInNamespace()).andReturn("cn=testUser,ou=Ambari,dc=SME,dc=support,dc=com");
replay(ldapServerProperties,adapter);
AmbariLdapDataPopulator.LdapUserContextMapper ldapUserContextMapper=new AmbariLdapDataPopulator.LdapUserContextMapper(ldapServerProperties);
LdapUserDto userDto=(LdapUserDto)ldapUserContextMapper.mapFromContext(adapter);
assertNotNull(userDto);
assertEquals("uid1",userDto.getUid());
assertEquals("testuser",userDto.getUserName());
assertEquals("cn=testuser,ou=ambari,dc=sme,dc=support,dc=com",userDto.getDn());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSynchronizeLdapUsers_update() throws Exception {
User user1=createNiceMock(User.class);
User user2=createNiceMock(User.class);
User user3=createNiceMock(User.class);
User user4=createNiceMock(User.class);
expect(user1.getUserName()).andReturn("user1").anyTimes();
expect(user2.getUserName()).andReturn("user2").anyTimes();
expect(user3.getUserName()).andReturn("user5").anyTimes();
expect(user4.getUserName()).andReturn("user6").anyTimes();
expect(user1.isLdapUser()).andReturn(false).anyTimes();
expect(user2.isLdapUser()).andReturn(true).anyTimes();
expect(user3.isLdapUser()).andReturn(true).anyTimes();
expect(user4.isLdapUser()).andReturn(false).anyTimes();
List userList=Arrays.asList(user1,user2,user3,user4);
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(users.getAllUsers()).andReturn(userList);
replay(ldapTemplate,ldapServerProperties,users,configuration);
replay(user1,user2,user3,user4);
AmbariLdapDataPopulatorTestInstance populator=createMockBuilder(AmbariLdapDataPopulatorTestInstance.class).addMockedMethod("getLdapUsers").withConstructor(configuration,users).createNiceMock();
LdapUserDto externalUser1=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser2=createNiceMock(LdapUserDto.class);
LdapUserDto externalUser3=createNiceMock(LdapUserDto.class);
expect(externalUser1.getUserName()).andReturn("user1").anyTimes();
expect(externalUser2.getUserName()).andReturn("user2").anyTimes();
expect(externalUser3.getUserName()).andReturn("user6").anyTimes();
replay(externalUser2,externalUser3,externalUser1);
expect(populator.getLdapUsers("user1")).andReturn(Collections.singleton(externalUser1));
expect(populator.getLdapUsers("user2")).andReturn(Collections.singleton(externalUser2));
expect(populator.getLdapUsers("user6")).andReturn(Collections.singleton(externalUser3));
replay(populator);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
LdapBatchDto result=populator.synchronizeLdapUsers(createSet("user2","user1","user6"),new LdapBatchDto());
assertEquals(2,result.getUsersToBecomeLdap().size());
assertTrue(result.getUsersToBecomeLdap().contains("user1"));
assertTrue(result.getUsersToBecomeLdap().contains("user6"));
assertTrue(result.getUsersToBeCreated().isEmpty());
assertTrue(result.getUsersToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeRemoved().isEmpty());
assertTrue(result.getGroupsToBeCreated().isEmpty());
assertTrue(result.getGroupsToBecomeLdap().isEmpty());
assertTrue(result.getMembershipToAdd().isEmpty());
assertTrue(result.getMembershipToRemove().isEmpty());
verify(populator.loadLdapTemplate(),populator);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsLdapEnabled_badConfiguration(){
final Configuration configuration=createNiceMock(Configuration.class);
final Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
expect(configuration.isLdapConfigured()).andReturn(true);
expect(ldapTemplate.search(EasyMock.anyObject(),EasyMock.anyObject(),EasyMock.anyObject())).andThrow(new NullPointerException()).once();
replay(ldapTemplate,configuration,ldapServerProperties);
final AmbariLdapDataPopulatorTestInstance populator=new AmbariLdapDataPopulatorTestInstance(configuration,users);
populator.setLdapTemplate(ldapTemplate);
populator.setLdapServerProperties(ldapServerProperties);
assertFalse(populator.isLdapEnabled());
verify(populator.loadLdapTemplate(),configuration);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetLdapUserByMemberAttrNoPagination() throws Exception {
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
Capture contextMapperCapture=new Capture();
Capture searchControlsCapture=new Capture();
PagedResultsDirContextProcessor processor=createNiceMock(PagedResultsDirContextProcessor.class);
PagedResultsCookie cookie=createNiceMock(PagedResultsCookie.class);
LdapUserDto dto=new LdapUserDto();
List list=new LinkedList();
list.add(dto);
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
expect(ldapServerProperties.isPaginationEnabled()).andReturn(false).anyTimes();
expect(ldapServerProperties.getUserObjectClass()).andReturn("objectClass").anyTimes();
expect(ldapServerProperties.getUsernameAttribute()).andReturn("uid").anyTimes();
expect(ldapServerProperties.getDnAttribute()).andReturn("dn").anyTimes();
expect(ldapServerProperties.getBaseDN()).andReturn("baseDN").anyTimes();
expect(ldapTemplate.search(eq("baseDN"),eq("(&(objectClass=objectClass)(uid=foo))"),anyObject(SearchControls.class),capture(contextMapperCapture))).andReturn(list);
replay(ldapTemplate,ldapServerProperties,users,configuration,processor,cookie);
AmbariLdapDataPopulatorTestInstance populator=new AmbariLdapDataPopulatorTestInstance(configuration,users);
populator.setLdapTemplate(ldapTemplate);
populator.setProcessor(processor);
assertEquals(dto,populator.getLdapUserByMemberAttr("foo"));
verify(ldapTemplate,ldapServerProperties,users,configuration,processor,cookie);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetLdapUserByMemberAttr() throws Exception {
Configuration configuration=createNiceMock(Configuration.class);
Users users=createNiceMock(Users.class);
LdapTemplate ldapTemplate=createNiceMock(LdapTemplate.class);
LdapServerProperties ldapServerProperties=createNiceMock(LdapServerProperties.class);
Capture contextMapperCapture=new Capture();
Capture searchControlsCapture=new Capture();
PagedResultsDirContextProcessor processor=createNiceMock(PagedResultsDirContextProcessor.class);
PagedResultsCookie cookie=createNiceMock(PagedResultsCookie.class);
LdapUserDto dto=new LdapUserDto();
List list=new LinkedList();
list.add(dto);
expect(configuration.getLdapServerProperties()).andReturn(ldapServerProperties).anyTimes();
expect(ldapServerProperties.isPaginationEnabled()).andReturn(true).anyTimes();
expect(ldapServerProperties.getUserObjectClass()).andReturn("objectClass").anyTimes();
expect(ldapServerProperties.getDnAttribute()).andReturn("dn").anyTimes();
expect(ldapServerProperties.getBaseDN()).andReturn("baseDN").anyTimes();
expect(ldapServerProperties.getUsernameAttribute()).andReturn("uid").anyTimes();
expect(processor.getCookie()).andReturn(cookie).anyTimes();
expect(cookie.getCookie()).andReturn(null).anyTimes();
expect(ldapTemplate.search(eq("baseDN"),eq("(&(objectClass=objectClass)(uid=foo))"),anyObject(SearchControls.class),capture(contextMapperCapture),eq(processor))).andReturn(list);
replay(ldapTemplate,ldapServerProperties,users,configuration,processor,cookie);
AmbariLdapDataPopulatorTestInstance populator=new AmbariLdapDataPopulatorTestInstance(configuration,users);
populator.setLdapTemplate(ldapTemplate);
populator.setProcessor(processor);
assertEquals(dto,populator.getLdapUserByMemberAttr("foo"));
verify(ldapTemplate,ldapServerProperties,users,configuration,processor,cookie);
}
Class: org.apache.ambari.server.serveraction.ActionLogTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testWriteStdErr() throws Exception {
ActionLog actionLog=new ActionLog();
actionLog.writeStdErr(null);
Assert.assertEquals("",actionLog.getStdErr());
Assert.assertEquals("",actionLog.getStdOut());
actionLog.writeStdErr("This is a test message");
Assert.assertNotNull(actionLog.getStdErr());
Assert.assertTrue(actionLog.getStdErr().contains("This is a test message"));
Assert.assertEquals("",actionLog.getStdOut());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testWriteStdOut() throws Exception {
ActionLog actionLog=new ActionLog();
actionLog.writeStdOut(null);
Assert.assertEquals("",actionLog.getStdOut());
Assert.assertEquals("",actionLog.getStdErr());
actionLog.writeStdOut("This is a test message");
Assert.assertNotNull(actionLog.getStdErr());
Assert.assertTrue(actionLog.getStdOut().contains("This is a test message"));
Assert.assertEquals("",actionLog.getStdErr());
}
Class: org.apache.ambari.server.serveraction.ServerActionExecutorTest InternalCallVerifier EqualityVerifier
/**
* Test a manual stage
*/
@Test public void testServerActionManualStage() throws Exception {
final Request request=createMockRequest();
stageFactory=createNiceMock(StageFactory.class);
final Stage stage=stageFactory.createNew(1,"/tmp","cluster1",978,"context",CLUSTER_HOST_INFO,"{\"host_param\":\"param_value\"}","{\"stage_param\":\"param_value\"}");
stage.addServerActionCommand(ManualStageAction.class.getName(),null,Role.AMBARI_SERVER_ACTION,RoleCommand.EXECUTE,"cluster1",new ServiceComponentHostServerActionEvent(StageUtils.getHostName(),System.currentTimeMillis()),Collections.emptyMap(),null,null,1200,false,false);
final List stages=new ArrayList(){
{
add(stage);
}
}
;
ActionDBAccessor db=createMockActionDBAccessor(request,stages);
ServerActionExecutor.init(injector);
ServerActionExecutor executor=new ServerActionExecutor(db,10000);
stage.getHostRoleCommand(SERVER_HOST_NAME,Role.AMBARI_SERVER_ACTION.toString()).setStatus(HostRoleStatus.QUEUED);
int cycleCount=0;
while (!getTaskStatus(stage).isHoldingState() && (cycleCount++ <= MAX_CYCLE_ITERATIONS)) {
executor.doWork();
}
assertEquals(HostRoleStatus.HOLDING,getTaskStatus(stage));
}
InternalCallVerifier EqualityVerifier
/**
* Test a timeout server action
*/
@Test public void testServerActionTimeout() throws Exception {
final Request request=createMockRequest();
final Stage s=getStageWithServerAction(1,977,new HashMap(){
{
put(MockServerAction.PAYLOAD_FORCE_FAIL,"timeout");
}
}
,"test",1);
final List stages=new ArrayList(){
{
add(s);
}
}
;
ActionDBAccessor db=createMockActionDBAccessor(request,stages);
ServerActionExecutor.init(injector);
ServerActionExecutor executor=new ServerActionExecutor(db,10000);
s.getHostRoleCommand(SERVER_HOST_NAME,Role.AMBARI_SERVER_ACTION.toString()).setStatus(HostRoleStatus.QUEUED);
int cycleCount=0;
while (!getTaskStatus(s).isCompletedState() && (cycleCount++ <= MAX_CYCLE_ITERATIONS)) {
executor.doWork();
}
assertEquals(HostRoleStatus.TIMEDOUT,getTaskStatus(s));
}
InternalCallVerifier EqualityVerifier
/**
* Test a timeout server action
*/
@Test public void testServerActionFailedException() throws Exception {
final Request request=createMockRequest();
final Stage s=getStageWithServerAction(1,977,new HashMap(){
{
put(MockServerAction.PAYLOAD_FORCE_FAIL,"exception");
}
}
,"test",1);
final List stages=new ArrayList(){
{
add(s);
}
}
;
ActionDBAccessor db=createMockActionDBAccessor(request,stages);
ServerActionExecutor.init(injector);
ServerActionExecutor executor=new ServerActionExecutor(db,10000);
s.getHostRoleCommand(SERVER_HOST_NAME,Role.AMBARI_SERVER_ACTION.toString()).setStatus(HostRoleStatus.QUEUED);
int cycleCount=0;
while (!getTaskStatus(s).isCompletedState() && (cycleCount++ <= MAX_CYCLE_ITERATIONS)) {
executor.doWork();
}
assertEquals(HostRoleStatus.FAILED,getTaskStatus(s));
}
InternalCallVerifier EqualityVerifier
/**
* Test a timeout server action
*/
@Test public void testServerActionFailedReport() throws Exception {
final Request request=createMockRequest();
final Stage s=getStageWithServerAction(1,977,new HashMap(){
{
put(MockServerAction.PAYLOAD_FORCE_FAIL,"report");
}
}
,"test",1);
final List stages=new ArrayList(){
{
add(s);
}
}
;
ActionDBAccessor db=createMockActionDBAccessor(request,stages);
ServerActionExecutor.init(injector);
ServerActionExecutor executor=new ServerActionExecutor(db,10000);
s.getHostRoleCommand(SERVER_HOST_NAME,Role.AMBARI_SERVER_ACTION.toString()).setStatus(HostRoleStatus.QUEUED);
int cycleCount=0;
while (!getTaskStatus(s).isCompletedState() && (cycleCount++ <= MAX_CYCLE_ITERATIONS)) {
executor.doWork();
}
assertEquals(HostRoleStatus.FAILED,getTaskStatus(s));
}
InternalCallVerifier EqualityVerifier
/**
* Test a normal server action
*/
@Test public void testServerAction() throws Exception {
final Request request=createMockRequest();
final Stage s=getStageWithServerAction(1,977,null,"test",300);
final List stages=new ArrayList(){
{
add(s);
}
}
;
ActionDBAccessor db=createMockActionDBAccessor(request,stages);
ServerActionExecutor.init(injector);
ServerActionExecutor executor=new ServerActionExecutor(db,10000);
s.getHostRoleCommand(SERVER_HOST_NAME,Role.AMBARI_SERVER_ACTION.toString()).setStatus(HostRoleStatus.QUEUED);
int cycleCount=0;
while (!getTaskStatus(s).isCompletedState() && (cycleCount++ <= MAX_CYCLE_ITERATIONS)) {
executor.doWork();
}
assertEquals(HostRoleStatus.COMPLETED,getTaskStatus(s));
}
Class: org.apache.ambari.server.serveraction.kerberos.ADKerberosOperationHandlerTest IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testProcessCreateTemplateCustom() throws Exception {
PrincipalKeyCredential kc=new PrincipalKeyCredential(DEFAULT_ADMIN_PRINCIPAL,DEFAULT_ADMIN_PASSWORD);
Map kerberosEnvMap=new HashMap(){
{
put(ADKerberosOperationHandler.KERBEROS_ENV_LDAP_URL,DEFAULT_LDAP_URL);
put(ADKerberosOperationHandler.KERBEROS_ENV_PRINCIPAL_CONTAINER_DN,DEFAULT_PRINCIPAL_CONTAINER_DN);
put(ADKerberosOperationHandler.KERBEROS_ENV_AD_CREATE_ATTRIBUTES_TEMPLATE,"" + "#set( $user = \"${principal_primary}-${principal_digest}\" )" + "{"+ " \"objectClass\": ["+ " \"top\","+ " \"person\","+ " \"organizationalPerson\","+ " \"user\""+ " ],"+ " \"cn\": \"$user\","+ " \"sAMAccountName\": \"$user.substring(0,20)\","+ " #if( $is_service )"+ " \"servicePrincipalName\": \"$principal_name\","+ " #end"+ " \"userPrincipalName\": \"$normalized_principal\","+ " \"unicodePwd\": \"$password\","+ " \"accountExpires\": \"0\","+ " \"userAccountControl\": \"66048\""+ "}");
}
}
;
Capture capturedName=new Capture();
Capture capturedAttributes=new Capture();
ADKerberosOperationHandler handler=createMockBuilder(ADKerberosOperationHandler.class).addMockedMethod(ADKerberosOperationHandler.class.getDeclaredMethod("createInitialLdapContext",Properties.class,Control[].class)).addMockedMethod(ADKerberosOperationHandler.class.getDeclaredMethod("createSearchControls")).createNiceMock();
NamingEnumeration searchResult=createNiceMock(NamingEnumeration.class);
expect(searchResult.hasMore()).andReturn(false).once();
LdapContext ldapContext=createNiceMock(LdapContext.class);
expect(ldapContext.search(anyObject(String.class),anyObject(String.class),anyObject(SearchControls.class))).andReturn(searchResult).once();
expect(ldapContext.createSubcontext(capture(capturedName),capture(capturedAttributes))).andReturn(createNiceMock(DirContext.class)).once();
expect(handler.createInitialLdapContext(anyObject(Properties.class),anyObject(Control[].class))).andReturn(ldapContext).once();
expect(handler.createSearchControls()).andAnswer(new IAnswer(){
@Override public SearchControls answer() throws Throwable {
SearchControls searchControls=createNiceMock(SearchControls.class);
replay(searchControls);
return searchControls;
}
}
).once();
replayAll();
handler.open(kc,DEFAULT_REALM,kerberosEnvMap);
handler.createPrincipal("nn/c6501.ambari.apache.org","secret",true);
handler.close();
Attributes attributes=capturedAttributes.getValue();
String[] objectClasses=new String[]{"top","person","organizationalPerson","user"};
Assert.assertNotNull(attributes);
Assert.assertEquals(8,attributes.size());
Assert.assertNotNull(attributes.get("objectClass"));
Assert.assertEquals(objectClasses.length,attributes.get("objectClass").size());
for (int i=0; i < objectClasses.length; i++) {
Assert.assertEquals(objectClasses[i],attributes.get("objectClass").get(i));
}
Assert.assertNotNull(attributes.get("cn"));
Assert.assertEquals("nn-995e1580db28198e7fda1417ab5d894c877937d2",attributes.get("cn").get());
Assert.assertNotNull(attributes.get("servicePrincipalName"));
Assert.assertEquals("nn/c6501.ambari.apache.org",attributes.get("servicePrincipalName").get());
Assert.assertNotNull(attributes.get("userPrincipalName"));
Assert.assertEquals("nn/c6501.ambari.apache.org@HDP01.LOCAL",attributes.get("userPrincipalName").get());
Assert.assertNotNull(attributes.get("sAMAccountName"));
Assert.assertTrue(attributes.get("sAMAccountName").get().toString().length() <= 20);
Assert.assertEquals("nn-995e1580db28198e7",attributes.get("sAMAccountName").get());
Assert.assertNotNull(attributes.get("unicodePwd"));
Assert.assertEquals("\"secret\"",new String((byte[])attributes.get("unicodePwd").get(),Charset.forName("UTF-16LE")));
Assert.assertNotNull(attributes.get("accountExpires"));
Assert.assertEquals("0",attributes.get("accountExpires").get());
Assert.assertNotNull(attributes.get("userAccountControl"));
Assert.assertEquals("66048",attributes.get("userAccountControl").get());
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testProcessCreateTemplateDefault() throws Exception {
PrincipalKeyCredential kc=new PrincipalKeyCredential(DEFAULT_ADMIN_PRINCIPAL,DEFAULT_ADMIN_PASSWORD);
Map kerberosEnvMap=new HashMap(){
{
put(ADKerberosOperationHandler.KERBEROS_ENV_LDAP_URL,DEFAULT_LDAP_URL);
put(ADKerberosOperationHandler.KERBEROS_ENV_PRINCIPAL_CONTAINER_DN,DEFAULT_PRINCIPAL_CONTAINER_DN);
}
}
;
Capture capturedName=new Capture(CaptureType.ALL);
Capture capturedAttributes=new Capture(CaptureType.ALL);
ADKerberosOperationHandler handler=createMockBuilder(ADKerberosOperationHandler.class).addMockedMethod(ADKerberosOperationHandler.class.getDeclaredMethod("createInitialLdapContext",Properties.class,Control[].class)).addMockedMethod(ADKerberosOperationHandler.class.getDeclaredMethod("createSearchControls")).createNiceMock();
NamingEnumeration searchResult=createNiceMock(NamingEnumeration.class);
expect(searchResult.hasMore()).andReturn(false).once();
LdapContext ldapContext=createNiceMock(LdapContext.class);
expect(ldapContext.search(anyObject(String.class),anyObject(String.class),anyObject(SearchControls.class))).andReturn(searchResult).once();
expect(ldapContext.createSubcontext(capture(capturedName),capture(capturedAttributes))).andReturn(createNiceMock(DirContext.class)).anyTimes();
expect(handler.createInitialLdapContext(anyObject(Properties.class),anyObject(Control[].class))).andReturn(ldapContext).once();
expect(handler.createSearchControls()).andAnswer(new IAnswer(){
@Override public SearchControls answer() throws Throwable {
SearchControls searchControls=createNiceMock(SearchControls.class);
replay(searchControls);
return searchControls;
}
}
).once();
replayAll();
handler.open(kc,DEFAULT_REALM,kerberosEnvMap);
handler.createPrincipal("nn/c6501.ambari.apache.org","secret",true);
handler.createPrincipal("hdfs@" + DEFAULT_REALM,"secret",false);
handler.close();
List attributesList=capturedAttributes.getValues();
Attributes attributes;
attributes=attributesList.get(0);
String[] objectClasses=new String[]{"top","person","organizationalPerson","user"};
Assert.assertNotNull(attributes);
Assert.assertEquals(7,attributes.size());
Assert.assertNotNull(attributes.get("objectClass"));
Assert.assertEquals(objectClasses.length,attributes.get("objectClass").size());
for (int i=0; i < objectClasses.length; i++) {
Assert.assertEquals(objectClasses[i],attributes.get("objectClass").get(i));
}
Assert.assertNotNull(attributes.get("cn"));
Assert.assertEquals("nn/c6501.ambari.apache.org",attributes.get("cn").get());
Assert.assertNotNull(attributes.get("servicePrincipalName"));
Assert.assertEquals("nn/c6501.ambari.apache.org",attributes.get("servicePrincipalName").get());
Assert.assertNotNull(attributes.get("userPrincipalName"));
Assert.assertEquals("nn/c6501.ambari.apache.org@HDP01.LOCAL",attributes.get("userPrincipalName").get());
Assert.assertNotNull(attributes.get("unicodePwd"));
Assert.assertEquals("\"secret\"",new String((byte[])attributes.get("unicodePwd").get(),Charset.forName("UTF-16LE")));
Assert.assertNotNull(attributes.get("accountExpires"));
Assert.assertEquals("0",attributes.get("accountExpires").get());
Assert.assertNotNull(attributes.get("userAccountControl"));
Assert.assertEquals("66048",attributes.get("userAccountControl").get());
attributes=attributesList.get(1);
Assert.assertNotNull(attributes);
Assert.assertEquals(6,attributes.size());
Assert.assertNotNull(attributes.get("objectClass"));
Assert.assertEquals(objectClasses.length,attributes.get("objectClass").size());
for (int i=0; i < objectClasses.length; i++) {
Assert.assertEquals(objectClasses[i],attributes.get("objectClass").get(i));
}
Assert.assertNotNull(attributes.get("cn"));
Assert.assertEquals("hdfs",attributes.get("cn").get());
Assert.assertNotNull(attributes.get("userPrincipalName"));
Assert.assertEquals("hdfs@HDP01.LOCAL",attributes.get("userPrincipalName").get());
Assert.assertNotNull(attributes.get("unicodePwd"));
Assert.assertEquals("\"secret\"",new String((byte[])attributes.get("unicodePwd").get(),Charset.forName("UTF-16LE")));
Assert.assertNotNull(attributes.get("accountExpires"));
Assert.assertEquals("0",attributes.get("accountExpires").get());
Assert.assertNotNull(attributes.get("userAccountControl"));
Assert.assertEquals("66048",attributes.get("userAccountControl").get());
}
Class: org.apache.ambari.server.serveraction.kerberos.CreateKeytabFilesServerActionTest APIUtilityVerifier InternalCallVerifier BooleanVerifier AssumptionSetter EqualityVerifier NullVerifier HybridVerifier
@Test public void testEnsureAmbariOnlyAccess() throws Exception {
Assume.assumeTrue(ShellCommandUtil.UNIX_LIKE);
Path path;
Set permissions;
File directory=testFolder.newFolder();
Assert.assertNotNull(directory);
new CreateKeytabFilesServerAction().ensureAmbariOnlyAccess(directory);
path=Paths.get(directory.getAbsolutePath());
Assert.assertNotNull(path);
permissions=Files.getPosixFilePermissions(path);
Assert.assertNotNull(permissions);
Assert.assertNotNull(permissions);
Assert.assertEquals(3,permissions.size());
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_READ));
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_WRITE));
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_EXECUTE));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_READ));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_EXECUTE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_READ));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_EXECUTE));
File file=File.createTempFile("temp_","",directory);
Assert.assertNotNull(file);
Assert.assertTrue(file.exists());
new CreateKeytabFilesServerAction().ensureAmbariOnlyAccess(file);
path=Paths.get(file.getAbsolutePath());
Assert.assertNotNull(path);
permissions=Files.getPosixFilePermissions(path);
Assert.assertNotNull(permissions);
Assert.assertEquals(2,permissions.size());
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_READ));
Assert.assertTrue(permissions.contains(PosixFilePermission.OWNER_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OWNER_EXECUTE));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_READ));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.GROUP_EXECUTE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_READ));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_WRITE));
Assert.assertFalse(permissions.contains(PosixFilePermission.OTHERS_EXECUTE));
}
Class: org.apache.ambari.server.serveraction.kerberos.DeconstructedPrincipalTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPrimaryInstanceRealm() throws Exception {
DeconstructedPrincipal deconstructedPrincipal=DeconstructedPrincipal.valueOf("primary/instance@MYREALM","REALM");
assertNotNull(deconstructedPrincipal);
assertEquals("primary",deconstructedPrincipal.getPrimary());
assertEquals("instance",deconstructedPrincipal.getInstance());
assertEquals("MYREALM",deconstructedPrincipal.getRealm());
assertEquals("primary/instance",deconstructedPrincipal.getPrincipalName());
assertEquals("primary/instance@MYREALM",deconstructedPrincipal.getNormalizedPrincipal());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPrimary() throws Exception {
DeconstructedPrincipal deconstructedPrincipal=DeconstructedPrincipal.valueOf("primary","REALM");
assertNotNull(deconstructedPrincipal);
assertEquals("primary",deconstructedPrincipal.getPrimary());
assertNull(deconstructedPrincipal.getInstance());
assertEquals("REALM",deconstructedPrincipal.getRealm());
assertEquals("primary",deconstructedPrincipal.getPrincipalName());
assertEquals("primary@REALM",deconstructedPrincipal.getNormalizedPrincipal());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testOddCharacters() throws Exception {
DeconstructedPrincipal deconstructedPrincipal=DeconstructedPrincipal.valueOf("p_ri.ma-ry/i.n_s-tance@M_Y-REALM.COM","REALM");
assertNotNull(deconstructedPrincipal);
assertEquals("p_ri.ma-ry",deconstructedPrincipal.getPrimary());
assertEquals("i.n_s-tance",deconstructedPrincipal.getInstance());
assertEquals("M_Y-REALM.COM",deconstructedPrincipal.getRealm());
assertEquals("p_ri.ma-ry/i.n_s-tance",deconstructedPrincipal.getPrincipalName());
assertEquals("p_ri.ma-ry/i.n_s-tance@M_Y-REALM.COM",deconstructedPrincipal.getNormalizedPrincipal());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPrimaryInstance() throws Exception {
DeconstructedPrincipal deconstructedPrincipal=DeconstructedPrincipal.valueOf("primary/instance","REALM");
assertNotNull(deconstructedPrincipal);
assertEquals("primary",deconstructedPrincipal.getPrimary());
assertEquals("instance",deconstructedPrincipal.getInstance());
assertEquals("instance",deconstructedPrincipal.getInstance());
assertEquals("REALM",deconstructedPrincipal.getRealm());
assertEquals("primary/instance",deconstructedPrincipal.getPrincipalName());
assertEquals("primary/instance@REALM",deconstructedPrincipal.getNormalizedPrincipal());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPrimaryRealm() throws Exception {
DeconstructedPrincipal deconstructedPrincipal=DeconstructedPrincipal.valueOf("primary@MYREALM","REALM");
assertNotNull(deconstructedPrincipal);
assertEquals("primary",deconstructedPrincipal.getPrimary());
assertNull(deconstructedPrincipal.getInstance());
assertEquals("MYREALM",deconstructedPrincipal.getRealm());
assertEquals("primary",deconstructedPrincipal.getPrincipalName());
assertEquals("primary@MYREALM",deconstructedPrincipal.getNormalizedPrincipal());
}
Class: org.apache.ambari.server.serveraction.kerberos.KerberosConfigDataFileTest APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testKerberosConfigDataFile() throws Exception {
File file=folder.newFile();
Assert.assertNotNull(file);
KerberosConfigDataFileWriter writer=kerberosConfigDataFileWriterFactory.createKerberosConfigDataFileWriter(file);
Assert.assertFalse(writer.isClosed());
for (int i=0; i < 10; i++) {
writer.addRecord("config-type" + i,"key" + i,"value" + i,KerberosConfigDataFileWriter.OPERATION_TYPE_SET);
}
for (int i=10; i < 15; i++) {
writer.addRecord("config-type" + i,"key" + i,"value" + i,KerberosConfigDataFileWriter.OPERATION_TYPE_REMOVE);
}
writer.close();
Assert.assertTrue(writer.isClosed());
KerberosConfigDataFileReader reader=kerberosConfigDataFileReaderFactory.createKerberosConfigDataFileReader(file);
Assert.assertFalse(reader.isClosed());
Iterator> iterator=reader.iterator();
Assert.assertNotNull(iterator);
int i=0;
while (iterator.hasNext()) {
Map record=iterator.next();
if (i < 15) {
Assert.assertEquals("config-type" + i,record.get(KerberosConfigDataFileReader.CONFIGURATION_TYPE));
Assert.assertEquals("key" + i,record.get(KerberosConfigDataFileReader.KEY));
Assert.assertEquals("value" + i,record.get(KerberosConfigDataFileReader.VALUE));
if (i < 10) {
Assert.assertEquals("SET",record.get(KerberosConfigDataFileReader.OPERATION));
}
else {
Assert.assertEquals("REMOVE",record.get(KerberosConfigDataFileReader.OPERATION));
}
}
i++;
}
Assert.assertEquals(15,i);
reader.close();
Assert.assertTrue(reader.isClosed());
reader.open();
Assert.assertFalse(reader.isClosed());
i=0;
for ( Map record : reader) {
if (i < 10) {
Assert.assertEquals("config-type" + i,record.get(KerberosConfigDataFileReader.CONFIGURATION_TYPE));
Assert.assertEquals("key" + i,record.get(KerberosConfigDataFileReader.KEY));
Assert.assertEquals("value" + i,record.get(KerberosConfigDataFileReader.VALUE));
}
i++;
}
Assert.assertEquals(15,i);
reader.close();
Assert.assertTrue(reader.isClosed());
writer.open();
Assert.assertFalse(writer.isClosed());
writer.addRecord("config-type","key","value",KerberosConfigDataFileReader.OPERATION_TYPE_SET);
writer.close();
Assert.assertTrue(writer.isClosed());
reader=kerberosConfigDataFileReaderFactory.createKerberosConfigDataFileReader(file);
Assert.assertFalse(reader.isClosed());
i=0;
for ( Map record : reader) {
i++;
}
Assert.assertEquals(16,i);
reader.close();
Assert.assertTrue(reader.isClosed());
writer=kerberosConfigDataFileWriterFactory.createKerberosConfigDataFileWriter(file);
Assert.assertFalse(writer.isClosed());
writer.addRecord("config-type","key","value",KerberosConfigDataFileReader.OPERATION_TYPE_REMOVE);
writer.close();
Assert.assertTrue(writer.isClosed());
reader.open();
Assert.assertFalse(reader.isClosed());
i=0;
for ( Map record : reader) {
i++;
}
Assert.assertEquals(17,i);
reader.close();
Assert.assertTrue(reader.isClosed());
i=0;
for ( Map record : reader) {
i++;
}
Assert.assertEquals(0,i);
}
Class: org.apache.ambari.server.serveraction.kerberos.KerberosIdentityDataFileTest APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testKerberosIdentityDataFile() throws Exception {
File file=folder.newFile();
Assert.assertNotNull(file);
KerberosIdentityDataFileWriter writer=kerberosIdentityDataFileWriterFactory.createKerberosIdentityDataFileWriter(file);
Assert.assertFalse(writer.isClosed());
for (int i=0; i < 10; i++) {
writer.writeRecord("hostName" + i,"serviceName" + i,"serviceComponentName" + i,"principal" + i,"principal_type" + i,"keytabFilePath" + i,"keytabFileOwnerName" + i,"keytabFileOwnerAccess" + i,"keytabFileGroupName" + i,"keytabFileGroupAccess" + i,"false");
}
writer.writeRecord("hostName's","serviceName#","serviceComponentName\"","principal","principal_type","keytabFilePath","'keytabFileOwnerName'","","\"keytabFileGroupName\"","keytab,File,Group,Access","false");
writer.close();
Assert.assertTrue(writer.isClosed());
KerberosIdentityDataFileReader reader=kerberosIdentityDataFileReaderFactory.createKerberosIdentityDataFileReader(file);
Assert.assertFalse(reader.isClosed());
Iterator> iterator=reader.iterator();
Assert.assertNotNull(iterator);
int i=0;
while (iterator.hasNext()) {
Map record=iterator.next();
if (i < 10) {
Assert.assertEquals("hostName" + i,record.get(KerberosIdentityDataFileReader.HOSTNAME));
Assert.assertEquals("serviceName" + i,record.get(KerberosIdentityDataFileReader.SERVICE));
Assert.assertEquals("serviceComponentName" + i,record.get(KerberosIdentityDataFileReader.COMPONENT));
Assert.assertEquals("principal" + i,record.get(KerberosIdentityDataFileReader.PRINCIPAL));
Assert.assertEquals("principal_type" + i,record.get(KerberosIdentityDataFileReader.PRINCIPAL_TYPE));
Assert.assertEquals("keytabFilePath" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_PATH));
Assert.assertEquals("keytabFileOwnerName" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_NAME));
Assert.assertEquals("keytabFileOwnerAccess" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_ACCESS));
Assert.assertEquals("keytabFileGroupName" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_NAME));
Assert.assertEquals("keytabFileGroupAccess" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_ACCESS));
Assert.assertEquals("false",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_IS_CACHABLE));
}
else {
Assert.assertEquals("hostName's",record.get(KerberosIdentityDataFileReader.HOSTNAME));
Assert.assertEquals("serviceName#",record.get(KerberosIdentityDataFileReader.SERVICE));
Assert.assertEquals("serviceComponentName\"",record.get(KerberosIdentityDataFileReader.COMPONENT));
Assert.assertEquals("principal",record.get(KerberosIdentityDataFileReader.PRINCIPAL));
Assert.assertEquals("principal_type",record.get(KerberosIdentityDataFileReader.PRINCIPAL_TYPE));
Assert.assertEquals("keytabFilePath",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_PATH));
Assert.assertEquals("'keytabFileOwnerName'",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_NAME));
Assert.assertEquals("",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_ACCESS));
Assert.assertEquals("\"keytabFileGroupName\"",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_NAME));
Assert.assertEquals("keytab,File,Group,Access",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_ACCESS));
Assert.assertEquals("false",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_IS_CACHABLE));
}
i++;
}
reader.close();
Assert.assertTrue(reader.isClosed());
reader.open();
Assert.assertFalse(reader.isClosed());
i=0;
for ( Map record : reader) {
if (i < 10) {
Assert.assertEquals("hostName" + i,record.get(KerberosIdentityDataFileReader.HOSTNAME));
Assert.assertEquals("serviceName" + i,record.get(KerberosIdentityDataFileReader.SERVICE));
Assert.assertEquals("serviceComponentName" + i,record.get(KerberosIdentityDataFileReader.COMPONENT));
Assert.assertEquals("principal" + i,record.get(KerberosIdentityDataFileReader.PRINCIPAL));
Assert.assertEquals("principal_type" + i,record.get(KerberosIdentityDataFileReader.PRINCIPAL_TYPE));
Assert.assertEquals("keytabFilePath" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_PATH));
Assert.assertEquals("keytabFileOwnerName" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_NAME));
Assert.assertEquals("keytabFileOwnerAccess" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_ACCESS));
Assert.assertEquals("keytabFileGroupName" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_NAME));
Assert.assertEquals("keytabFileGroupAccess" + i,record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_ACCESS));
}
else {
Assert.assertEquals("hostName's",record.get(KerberosIdentityDataFileReader.HOSTNAME));
Assert.assertEquals("serviceName#",record.get(KerberosIdentityDataFileReader.SERVICE));
Assert.assertEquals("serviceComponentName\"",record.get(KerberosIdentityDataFileReader.COMPONENT));
Assert.assertEquals("principal",record.get(KerberosIdentityDataFileReader.PRINCIPAL));
Assert.assertEquals("principal_type",record.get(KerberosIdentityDataFileReader.PRINCIPAL_TYPE));
Assert.assertEquals("keytabFilePath",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_PATH));
Assert.assertEquals("'keytabFileOwnerName'",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_NAME));
Assert.assertEquals("",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_OWNER_ACCESS));
Assert.assertEquals("\"keytabFileGroupName\"",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_NAME));
Assert.assertEquals("keytab,File,Group,Access",record.get(KerberosIdentityDataFileReader.KEYTAB_FILE_GROUP_ACCESS));
}
i++;
}
reader.close();
Assert.assertTrue(reader.isClosed());
writer.open();
Assert.assertFalse(writer.isClosed());
writer.writeRecord("hostName","serviceName","serviceComponentName","principal","principal_type","keytabFilePath","keytabFileOwnerName","keytabFileOwnerAccess","keytabFileGroupName","keytabFileGroupAccess","true");
writer.close();
Assert.assertTrue(writer.isClosed());
reader=kerberosIdentityDataFileReaderFactory.createKerberosIdentityDataFileReader(file);
Assert.assertFalse(reader.isClosed());
i=0;
for ( Map record : reader) {
i++;
}
Assert.assertEquals(12,i);
reader.close();
Assert.assertTrue(reader.isClosed());
writer=kerberosIdentityDataFileWriterFactory.createKerberosIdentityDataFileWriter(file);
Assert.assertFalse(writer.isClosed());
writer.writeRecord("hostName","serviceName","serviceComponentName","principal","principal_type","keytabFilePath","keytabFileOwnerName","keytabFileOwnerAccess","keytabFileGroupName","keytabFileGroupAccess","true");
writer.close();
Assert.assertTrue(writer.isClosed());
reader.open();
Assert.assertFalse(reader.isClosed());
i=0;
for ( Map record : reader) {
i++;
}
Assert.assertEquals(13,i);
reader.close();
Assert.assertTrue(reader.isClosed());
i=0;
for ( Map record : reader) {
i++;
}
Assert.assertEquals(0,i);
}
Class: org.apache.ambari.server.serveraction.kerberos.KerberosOperationHandlerTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetExecutableSearchPaths() throws KerberosOperationException {
KerberosOperationHandler handler=createHandler();
handler.setExecutableSearchPaths((String)null);
Assert.assertNull(handler.getExecutableSearchPaths());
handler.setExecutableSearchPaths((String[])null);
Assert.assertNull(handler.getExecutableSearchPaths());
handler.setExecutableSearchPaths("");
Assert.assertNotNull(handler.getExecutableSearchPaths());
Assert.assertEquals(0,handler.getExecutableSearchPaths().length);
handler.setExecutableSearchPaths(new String[0]);
Assert.assertNotNull(handler.getExecutableSearchPaths());
Assert.assertEquals(0,handler.getExecutableSearchPaths().length);
handler.setExecutableSearchPaths(new String[]{""});
Assert.assertNotNull(handler.getExecutableSearchPaths());
Assert.assertEquals(1,handler.getExecutableSearchPaths().length);
handler.setExecutableSearchPaths("/path1, path2, path3/");
Assert.assertNotNull(handler.getExecutableSearchPaths());
Assert.assertEquals(3,handler.getExecutableSearchPaths().length);
Assert.assertEquals("/path1",handler.getExecutableSearchPaths()[0]);
Assert.assertEquals("path2",handler.getExecutableSearchPaths()[1]);
Assert.assertEquals("path3/",handler.getExecutableSearchPaths()[2]);
handler.setExecutableSearchPaths("/path1, path2, ,path3/");
Assert.assertNotNull(handler.getExecutableSearchPaths());
Assert.assertEquals(3,handler.getExecutableSearchPaths().length);
Assert.assertEquals("/path1",handler.getExecutableSearchPaths()[0]);
Assert.assertEquals("path2",handler.getExecutableSearchPaths()[1]);
Assert.assertEquals("path3/",handler.getExecutableSearchPaths()[2]);
handler.setExecutableSearchPaths(new String[]{"/path1","path2","path3/"});
Assert.assertNotNull(handler.getExecutableSearchPaths());
Assert.assertEquals(3,handler.getExecutableSearchPaths().length);
Assert.assertEquals("/path1",handler.getExecutableSearchPaths()[0]);
Assert.assertEquals("path2",handler.getExecutableSearchPaths()[1]);
Assert.assertEquals("path3/",handler.getExecutableSearchPaths()[2]);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateKeytabFileFromBase64EncodedData() throws Exception {
KerberosOperationHandler handler=createHandler();
File file=folder.newFile();
final String principal="principal@REALM.COM";
Assert.assertTrue(handler.createKeytabFile(principal,"some password",0,file));
FileInputStream fis=new FileInputStream(file);
byte[] data=new byte[(int)file.length()];
Assert.assertEquals(data.length,fis.read(data));
fis.close();
File f=handler.createKeytabFile(Base64.encodeBase64String(data));
if (f != null) {
try {
Keytab keytab=Keytab.read(f);
Assert.assertNotNull(keytab);
List entries=keytab.getEntries();
Assert.assertNotNull(entries);
Assert.assertFalse(entries.isEmpty());
for ( KeytabEntry entry : entries) {
Assert.assertEquals(principal,entry.getPrincipalName());
}
}
finally {
if (!f.delete()) {
f.deleteOnExit();
}
}
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateKeytabFileOneAtATime() throws Exception {
KerberosOperationHandler handler=createHandler();
File file=folder.newFile();
final String principal1="principal1@REALM.COM";
final String principal2="principal2@REALM.COM";
int count;
Assert.assertTrue(handler.createKeytabFile(principal1,"some password",0,file));
Keytab keytab=Keytab.read(file);
Assert.assertNotNull(keytab);
List entries=keytab.getEntries();
Assert.assertNotNull(entries);
Assert.assertFalse(entries.isEmpty());
count=entries.size();
for ( KeytabEntry entry : entries) {
Assert.assertEquals(principal1,entry.getPrincipalName());
}
Assert.assertTrue(handler.createKeytabFile(principal2,"some password",0,file));
keytab=Keytab.read(file);
Assert.assertNotNull(keytab);
entries=keytab.getEntries();
Assert.assertNotNull(entries);
Assert.assertFalse(entries.isEmpty());
Assert.assertEquals(count * 2,entries.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testTranslateEncryptionTypes() throws Exception {
KerberosOperationHandler handler=createHandler();
Assert.assertEquals(new HashSet(){
{
add(EncryptionType.AES256_CTS_HMAC_SHA1_96);
add(EncryptionType.AES128_CTS_HMAC_SHA1_96);
add(EncryptionType.DES3_CBC_SHA1_KD);
add(EncryptionType.DES_CBC_MD5);
add(EncryptionType.DES_CBC_MD4);
add(EncryptionType.DES_CBC_CRC);
add(EncryptionType.UNKNOWN);
}
}
,handler.translateEncryptionTypes("aes256-cts-hmac-sha1-96\n aes128-cts-hmac-sha1-96\tdes3-cbc-sha1 arcfour-hmac-md5 " + "camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4","\\s+"));
Assert.assertEquals(new HashSet(){
{
add(EncryptionType.AES256_CTS_HMAC_SHA1_96);
add(EncryptionType.AES128_CTS_HMAC_SHA1_96);
}
}
,handler.translateEncryptionTypes("aes"," "));
Assert.assertEquals(new HashSet(){
{
add(EncryptionType.AES256_CTS_HMAC_SHA1_96);
}
}
,handler.translateEncryptionTypes("aes-256"," "));
Assert.assertEquals(new HashSet(){
{
add(EncryptionType.DES3_CBC_SHA1_KD);
}
}
,handler.translateEncryptionTypes("des3"," "));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testEscapeCharacters() throws KerberosOperationException {
KerberosOperationHandler handler=createHandler();
HashSet specialCharacters=new HashSet(){
{
add('/');
add(',');
add('\\');
add('#');
add('+');
add('<');
add('>');
add(';');
add('"');
add('=');
add(' ');
}
}
;
Assert.assertEquals("\\/\\,\\\\\\#\\+\\<\\>\\;\\\"\\=\\ ",handler.escapeCharacters("/,\\#+<>;\"= ",specialCharacters,'\\'));
Assert.assertNull(handler.escapeCharacters(null,specialCharacters,'\\'));
Assert.assertEquals("",handler.escapeCharacters("",specialCharacters,'\\'));
Assert.assertEquals("nothing_special_here",handler.escapeCharacters("nothing_special_here",specialCharacters,'\\'));
Assert.assertEquals("\\/\\,\\\\\\#\\+\\<\\>\\;\\\"\\=\\ ",handler.escapeCharacters("/,\\#+<>;\"= ",specialCharacters,'\\'));
Assert.assertEquals("nothing<>special#here!",handler.escapeCharacters("nothing<>special#here!",null,'\\'));
Assert.assertEquals("nothing<>special#here!",handler.escapeCharacters("nothing<>special#here!",Collections.emptySet(),'\\'));
Assert.assertEquals("nothing<>special#here!",handler.escapeCharacters("nothing<>special#here!",Collections.singleton('?'),'\\'));
Assert.assertEquals("\\A's are special!",handler.escapeCharacters("A's are special!",Collections.singleton('A'),'\\'));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testEnsureKeytabFileContainsNoDuplicates() throws Exception {
KerberosOperationHandler handler=createHandler();
File file=folder.newFile();
final String principal1="principal1@REALM.COM";
final String principal2="principal2@REALM.COM";
Set seenEntries=new HashSet();
Assert.assertTrue(handler.createKeytabFile(principal1,"some password",0,file));
Assert.assertTrue(handler.createKeytabFile(principal2,"some password",0,file));
Assert.assertTrue(handler.createKeytabFile(principal2,"some password",0,file));
Keytab keytab=Keytab.read(file);
Assert.assertNotNull(keytab);
List entries=keytab.getEntries();
Assert.assertNotNull(entries);
Assert.assertFalse(entries.isEmpty());
for ( KeytabEntry entry : entries) {
String seenEntry=String.format("%s|%s",entry.getPrincipalName(),entry.getKey().getKeyType().toString());
Assert.assertFalse(seenEntries.contains(seenEntry));
seenEntries.add(seenEntry);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testMergeKeytabs() throws KerberosOperationException {
KerberosOperationHandler handler=createHandler();
Keytab keytab1=handler.createKeytab("principal@EXAMPLE.COM","password",1);
Keytab keytab2=handler.createKeytab("principal@EXAMPLE.COM","password1",1);
Keytab keytab3=handler.createKeytab("principal1@EXAMPLE.COM","password",4);
Keytab merged;
merged=handler.mergeKeytabs(keytab1,keytab2);
Assert.assertEquals(keytab1.getEntries().size(),merged.getEntries().size());
merged=handler.mergeKeytabs(keytab1,keytab3);
Assert.assertEquals(keytab1.getEntries().size() + keytab3.getEntries().size(),merged.getEntries().size());
merged=handler.mergeKeytabs(keytab2,keytab3);
Assert.assertEquals(keytab2.getEntries().size() + keytab3.getEntries().size(),merged.getEntries().size());
merged=handler.mergeKeytabs(keytab2,merged);
Assert.assertEquals(keytab2.getEntries().size() + keytab3.getEntries().size(),merged.getEntries().size());
}
Class: org.apache.ambari.server.serveraction.kerberos.KerberosServerActionTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testProcessIdentitiesFail() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
expect(kerberosHelper.getKDCAdministratorCredentials(EasyMock.anyObject(String.class))).andReturn(new PrincipalKeyCredential("principal","password")).anyTimes();
replay(kerberosHelper);
ConcurrentMap sharedMap=new ConcurrentHashMap();
sharedMap.put("FAIL","true");
CommandReport report=action.processIdentities(sharedMap);
Assert.assertNotNull(report);
Assert.assertEquals(HostRoleStatus.FAILED.toString(),report.getStatus());
verify(kerberosHelper);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testProcessIdentitiesSuccess() throws Exception {
KerberosHelper kerberosHelper=injector.getInstance(KerberosHelper.class);
expect(kerberosHelper.getKDCAdministratorCredentials(EasyMock.anyObject(String.class))).andReturn(new PrincipalKeyCredential("principal","password")).anyTimes();
replay(kerberosHelper);
ConcurrentMap sharedMap=new ConcurrentHashMap();
CommandReport report=action.processIdentities(sharedMap);
Assert.assertNotNull(report);
Assert.assertEquals(HostRoleStatus.COMPLETED.toString(),report.getStatus());
for ( Map.Entry entry : sharedMap.entrySet()) {
Assert.assertEquals(entry.getValue(),entry.getKey().replace("_HOST","hostName").replace("_REALM","REALM.COM"));
}
verify(kerberosHelper);
}
Class: org.apache.ambari.server.serveraction.kerberos.MITKerberosOperationHandlerTest InternalCallVerifier BooleanVerifier
@Test public void testTestAdministratorCredentialsNotFound() throws Exception {
MITKerberosOperationHandler handler=createMockBuilder(MITKerberosOperationHandler.class).addMockedMethod(KerberosOperationHandler.class.getDeclaredMethod("executeCommand",String[].class)).createNiceMock();
expect(handler.executeCommand(anyObject(String[].class))).andAnswer(new IAnswer(){
@Override public ShellCommandUtil.Result answer() throws Throwable {
ShellCommandUtil.Result result=createMock(ShellCommandUtil.Result.class);
expect(result.getExitCode()).andReturn(0).anyTimes();
expect(result.isSuccessful()).andReturn(true).anyTimes();
expect(result.getStderr()).andReturn("get_principal: Principal does not exist while retrieving \"admin/admi@EXAMPLE.COM\".").anyTimes();
expect(result.getStdout()).andReturn("Authenticating as principal admin/admin with password.").anyTimes();
replay(result);
return result;
}
}
);
replayAll();
handler.open(new PrincipalKeyCredential(DEFAULT_ADMIN_PRINCIPAL,DEFAULT_ADMIN_PASSWORD),DEFAULT_REALM,KERBEROS_ENV_MAP);
Assert.assertFalse(handler.testAdministratorCredentials());
handler.close();
}
Class: org.apache.ambari.server.serveraction.upgrades.AutoSkipFailedSummaryActionTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests workflow with failed host component tasks only
*/
@Test public void testAutoSkipFailedSummaryAction__red__host_components_only() throws Exception {
AutoSkipFailedSummaryAction action=new AutoSkipFailedSummaryAction();
m_injector.injectMembers(action);
ServiceComponentHostEvent event=createNiceMock(ServiceComponentHostEvent.class);
final HostRoleCommand hostRoleCommand=new HostRoleCommand("host1",Role.AMBARI_SERVER_ACTION,event,RoleCommand.EXECUTE,hostDAO,executionCommandDAO);
hostRoleCommand.setRequestId(1l);
hostRoleCommand.setStageId(1l);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setClusterName("cc");
executionCommand.setRoleCommand(RoleCommand.EXECUTE);
executionCommand.setRole("AMBARI_SERVER_ACTION");
executionCommand.setServiceName("");
executionCommand.setTaskId(1l);
ExecutionCommandWrapper wrapper=new ExecutionCommandWrapper(executionCommand);
hostRoleCommand.setExecutionCommandWrapper(wrapper);
Field f=AbstractServerAction.class.getDeclaredField("hostRoleCommand");
f.setAccessible(true);
f.set(action,hostRoleCommand);
final UpgradeItemEntity upgradeItem1=new UpgradeItemEntity();
upgradeItem1.setStageId(5l);
final UpgradeItemEntity upgradeItem2=new UpgradeItemEntity();
upgradeItem2.setStageId(6l);
UpgradeGroupEntity upgradeGroupEntity=new UpgradeGroupEntity();
upgradeGroupEntity.setId(11l);
List groupUpgradeItems=new ArrayList(){
{
add(upgradeItem1);
add(upgradeItem2);
}
}
;
upgradeGroupEntity.setItems(groupUpgradeItems);
UpgradeItemEntity upgradeItemEntity=new UpgradeItemEntity();
upgradeItemEntity.setGroupEntity(upgradeGroupEntity);
expect(upgradeDAOMock.findUpgradeItemByRequestAndStage(anyLong(),anyLong())).andReturn(upgradeItemEntity).anyTimes();
expect(upgradeDAOMock.findUpgradeGroup(anyLong())).andReturn(upgradeGroupEntity).anyTimes();
replay(upgradeDAOMock);
List skippedTasks=new ArrayList(){
{
add(createSkippedTask("DATANODE","DATANODE","host1.vm","RESTART HDFS/DATANODE",RoleCommand.CUSTOM_COMMAND,"RESTART"));
add(createSkippedTask("DATANODE","DATANODE","host2.vm","RESTART HDFS/DATANODE",RoleCommand.CUSTOM_COMMAND,"RESTART"));
}
}
;
expect(hostRoleCommandDAOMock.findByStatusBetweenStages(anyLong(),anyObject(HostRoleStatus.class),anyLong(),anyLong())).andReturn(skippedTasks).anyTimes();
replay(hostRoleCommandDAOMock);
ConcurrentMap requestSharedDataContext=new ConcurrentHashMap();
CommandReport result=action.execute(requestSharedDataContext);
assertNotNull(result.getStructuredOut());
assertEquals(0,result.getExitCode());
assertEquals(HostRoleStatus.HOLDING.toString(),result.getStatus());
assertEquals("There were 2 skipped failure(s) that must be addressed " + "before you can proceed. Please resolve each failure before continuing with the upgrade.",result.getStdOut());
assertEquals("{\"failures\":" + "{\"host_component\":" + "{\"host1.vm\":[{\"component\":\"DATANODE\",\"service\":\"HDFS\"}],"+ "\"host2.vm\":[{\"component\":\"DATANODE\",\"service\":\"HDFS\"}]}},"+ "\"skipped\":[\"host_component\"]}",result.getStructuredOut());
assertEquals("The following steps failed but were automatically skipped:\n" + "DATANODE on host1.vm: RESTART HDFS/DATANODE\n" + "DATANODE on host2.vm: RESTART HDFS/DATANODE\n",result.getStdErr());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests workflow with few skipped tasks
*/
@Test public void testAutoSkipFailedSummaryAction__red() throws Exception {
AutoSkipFailedSummaryAction action=new AutoSkipFailedSummaryAction();
m_injector.injectMembers(action);
ServiceComponentHostEvent event=createNiceMock(ServiceComponentHostEvent.class);
final HostRoleCommand hostRoleCommand=new HostRoleCommand("host1",Role.AMBARI_SERVER_ACTION,event,RoleCommand.EXECUTE,hostDAO,executionCommandDAO);
hostRoleCommand.setRequestId(1l);
hostRoleCommand.setStageId(1l);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setClusterName("cc");
executionCommand.setRoleCommand(RoleCommand.EXECUTE);
executionCommand.setRole("AMBARI_SERVER_ACTION");
executionCommand.setServiceName("");
executionCommand.setTaskId(1l);
ExecutionCommandWrapper wrapper=new ExecutionCommandWrapper(executionCommand);
hostRoleCommand.setExecutionCommandWrapper(wrapper);
Field f=AbstractServerAction.class.getDeclaredField("hostRoleCommand");
f.setAccessible(true);
f.set(action,hostRoleCommand);
final UpgradeItemEntity upgradeItem1=new UpgradeItemEntity();
upgradeItem1.setStageId(5l);
final UpgradeItemEntity upgradeItem2=new UpgradeItemEntity();
upgradeItem2.setStageId(6l);
UpgradeGroupEntity upgradeGroupEntity=new UpgradeGroupEntity();
upgradeGroupEntity.setId(11l);
List groupUpgradeItems=new ArrayList(){
{
add(upgradeItem1);
add(upgradeItem2);
}
}
;
upgradeGroupEntity.setItems(groupUpgradeItems);
UpgradeItemEntity upgradeItemEntity=new UpgradeItemEntity();
upgradeItemEntity.setGroupEntity(upgradeGroupEntity);
expect(upgradeDAOMock.findUpgradeItemByRequestAndStage(anyLong(),anyLong())).andReturn(upgradeItemEntity).anyTimes();
expect(upgradeDAOMock.findUpgradeGroup(anyLong())).andReturn(upgradeGroupEntity).anyTimes();
replay(upgradeDAOMock);
List skippedTasks=new ArrayList(){
{
add(createSkippedTask("DATANODE","DATANODE","host1.vm","RESTART HDFS/DATANODE",RoleCommand.CUSTOM_COMMAND,"RESTART"));
add(createSkippedTask("DATANODE","DATANODE","host2.vm","RESTART HDFS/DATANODE",RoleCommand.CUSTOM_COMMAND,"RESTART"));
add(createSkippedTask("ZOOKEEPER_QUORUM_SERVICE_CHECK","ZOOKEEPER_CLIENT","host2.vm","SERVICE_CHECK ZOOKEEPER",RoleCommand.SERVICE_CHECK,null));
}
}
;
expect(hostRoleCommandDAOMock.findByStatusBetweenStages(anyLong(),anyObject(HostRoleStatus.class),anyLong(),anyLong())).andReturn(skippedTasks).anyTimes();
replay(hostRoleCommandDAOMock);
ConcurrentMap requestSharedDataContext=new ConcurrentHashMap();
CommandReport result=action.execute(requestSharedDataContext);
assertNotNull(result.getStructuredOut());
assertEquals(0,result.getExitCode());
assertEquals(HostRoleStatus.HOLDING.toString(),result.getStatus());
assertEquals("There were 3 skipped failure(s) that must be addressed " + "before you can proceed. Please resolve each failure before continuing with the upgrade.",result.getStdOut());
assertEquals("{\"failures\":" + "{\"service_check\":[\"ZOOKEEPER\"]," + "\"host_component\":{"+ "\"host1.vm\":[{\"component\":\"DATANODE\",\"service\":\"HDFS\"}],"+ "\"host2.vm\":[{\"component\":\"DATANODE\",\"service\":\"HDFS\"}]}},"+ "\"skipped\":[\"service_check\",\"host_component\"]}",result.getStructuredOut());
assertEquals("The following steps failed but were automatically skipped:\n" + "DATANODE on host1.vm: RESTART HDFS/DATANODE\n" + "DATANODE on host2.vm: RESTART HDFS/DATANODE\n"+ "ZOOKEEPER_CLIENT on host2.vm: SERVICE_CHECK ZOOKEEPER\n",result.getStdErr());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests successful workflow
*/
@Test public void testAutoSkipFailedSummaryAction__green() throws Exception {
AutoSkipFailedSummaryAction action=new AutoSkipFailedSummaryAction();
m_injector.injectMembers(action);
ServiceComponentHostEvent event=createNiceMock(ServiceComponentHostEvent.class);
HostRoleCommand hostRoleCommand=new HostRoleCommand("host1",Role.AMBARI_SERVER_ACTION,event,RoleCommand.EXECUTE,hostDAO,executionCommandDAO);
hostRoleCommand.setRequestId(1l);
hostRoleCommand.setStageId(1l);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setClusterName("cc");
executionCommand.setRoleCommand(RoleCommand.EXECUTE);
executionCommand.setRole("AMBARI_SERVER_ACTION");
executionCommand.setServiceName("");
executionCommand.setTaskId(1l);
ExecutionCommandWrapper wrapper=new ExecutionCommandWrapper(executionCommand);
hostRoleCommand.setExecutionCommandWrapper(wrapper);
Field f=AbstractServerAction.class.getDeclaredField("hostRoleCommand");
f.setAccessible(true);
f.set(action,hostRoleCommand);
final UpgradeItemEntity upgradeItem1=new UpgradeItemEntity();
upgradeItem1.setStageId(5l);
final UpgradeItemEntity upgradeItem2=new UpgradeItemEntity();
upgradeItem2.setStageId(6l);
UpgradeGroupEntity upgradeGroupEntity=new UpgradeGroupEntity();
upgradeGroupEntity.setId(11l);
List groupUpgradeItems=new ArrayList(){
{
add(upgradeItem1);
add(upgradeItem2);
}
}
;
upgradeGroupEntity.setItems(groupUpgradeItems);
UpgradeItemEntity upgradeItemEntity=new UpgradeItemEntity();
upgradeItemEntity.setGroupEntity(upgradeGroupEntity);
expect(upgradeDAOMock.findUpgradeItemByRequestAndStage(anyLong(),anyLong())).andReturn(upgradeItemEntity).anyTimes();
expect(upgradeDAOMock.findUpgradeGroup(anyLong())).andReturn(upgradeGroupEntity).anyTimes();
replay(upgradeDAOMock);
List skippedTasks=new ArrayList(){
{
}
}
;
expect(hostRoleCommandDAOMock.findByStatusBetweenStages(anyLong(),anyObject(HostRoleStatus.class),anyLong(),anyLong())).andReturn(skippedTasks).anyTimes();
replay(hostRoleCommandDAOMock);
ConcurrentMap requestSharedDataContext=new ConcurrentHashMap();
CommandReport result=action.execute(requestSharedDataContext);
assertNotNull(result.getStructuredOut());
assertEquals(0,result.getExitCode());
assertEquals(HostRoleStatus.COMPLETED.toString(),result.getStatus());
assertEquals("There were no skipped failures",result.getStdOut());
assertEquals("{}",result.getStructuredOut());
assertEquals("",result.getStdErr());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests workflow with failed service check
*/
@Test public void testAutoSkipFailedSummaryAction__red__service_checks_only() throws Exception {
AutoSkipFailedSummaryAction action=new AutoSkipFailedSummaryAction();
m_injector.injectMembers(action);
ServiceComponentHostEvent event=createNiceMock(ServiceComponentHostEvent.class);
final HostRoleCommand hostRoleCommand=new HostRoleCommand("host1",Role.AMBARI_SERVER_ACTION,event,RoleCommand.EXECUTE,hostDAO,executionCommandDAO);
hostRoleCommand.setRequestId(1l);
hostRoleCommand.setStageId(1l);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setClusterName("cc");
executionCommand.setRoleCommand(RoleCommand.EXECUTE);
executionCommand.setRole("AMBARI_SERVER_ACTION");
executionCommand.setServiceName("");
executionCommand.setTaskId(1l);
ExecutionCommandWrapper wrapper=new ExecutionCommandWrapper(executionCommand);
hostRoleCommand.setExecutionCommandWrapper(wrapper);
Field f=AbstractServerAction.class.getDeclaredField("hostRoleCommand");
f.setAccessible(true);
f.set(action,hostRoleCommand);
final UpgradeItemEntity upgradeItem1=new UpgradeItemEntity();
upgradeItem1.setStageId(5l);
final UpgradeItemEntity upgradeItem2=new UpgradeItemEntity();
upgradeItem2.setStageId(6l);
UpgradeGroupEntity upgradeGroupEntity=new UpgradeGroupEntity();
upgradeGroupEntity.setId(11l);
List groupUpgradeItems=new ArrayList(){
{
add(upgradeItem1);
add(upgradeItem2);
}
}
;
upgradeGroupEntity.setItems(groupUpgradeItems);
UpgradeItemEntity upgradeItemEntity=new UpgradeItemEntity();
upgradeItemEntity.setGroupEntity(upgradeGroupEntity);
expect(upgradeDAOMock.findUpgradeItemByRequestAndStage(anyLong(),anyLong())).andReturn(upgradeItemEntity).anyTimes();
expect(upgradeDAOMock.findUpgradeGroup(anyLong())).andReturn(upgradeGroupEntity).anyTimes();
replay(upgradeDAOMock);
List skippedTasks=new ArrayList(){
{
add(createSkippedTask("ZOOKEEPER_QUORUM_SERVICE_CHECK","ZOOKEEPER_CLIENT","host2.vm","SERVICE_CHECK ZOOKEEPER",RoleCommand.SERVICE_CHECK,null));
}
}
;
expect(hostRoleCommandDAOMock.findByStatusBetweenStages(anyLong(),anyObject(HostRoleStatus.class),anyLong(),anyLong())).andReturn(skippedTasks).anyTimes();
replay(hostRoleCommandDAOMock);
ConcurrentMap requestSharedDataContext=new ConcurrentHashMap();
CommandReport result=action.execute(requestSharedDataContext);
assertNotNull(result.getStructuredOut());
assertEquals(0,result.getExitCode());
assertEquals(HostRoleStatus.HOLDING.toString(),result.getStatus());
assertEquals("There were 1 skipped failure(s) that must be addressed " + "before you can proceed. Please resolve each failure before continuing with the upgrade.",result.getStdOut());
assertEquals("{\"failures\":{\"service_check\":[\"ZOOKEEPER\"]},\"skipped\":[\"service_check\"]}",result.getStructuredOut());
assertEquals("The following steps failed but were automatically skipped:\n" + "ZOOKEEPER_CLIENT on host2.vm: SERVICE_CHECK ZOOKEEPER\n",result.getStdErr());
}
Class: org.apache.ambari.server.serveraction.upgrades.ComponentVersionCheckActionTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMixedComponentVersions() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_22_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_2_1_0;
makeCrossStackUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
Clusters clusters=m_injector.getInstance(Clusters.class);
Cluster cluster=clusters.getCluster("c1");
Service service=installService(cluster,"HDFS");
addServiceComponent(cluster,service,"NAMENODE");
addServiceComponent(cluster,service,"DATANODE");
createNewServiceComponentHost(cluster,"HDFS","NAMENODE","h1");
createNewServiceComponentHost(cluster,"HDFS","DATANODE","h1");
createConfigs(cluster);
cluster.setCurrentStackVersion(sourceStack);
cluster.setDesiredStackVersion(targetStack);
cluster.getServiceComponentHosts("HDFS","NAMENODE").get(0).setVersion(targetRepo);
ClusterVersionEntity upgradingClusterVersion=clusterVersionDAO.findByClusterAndStackAndVersion("c1",HDP_22_STACK,targetRepo);
upgradingClusterVersion.setState(RepositoryVersionState.UPGRADING);
upgradingClusterVersion=clusterVersionDAO.merge(upgradingClusterVersion);
upgradingClusterVersion=clusterVersionDAO.findByClusterAndStackAndVersion("c1",HDP_22_STACK,targetRepo);
List hostVersions=hostVersionDAO.findByClusterStackAndVersion("c1",HDP_22_STACK,targetRepo);
assertEquals(RepositoryVersionState.UPGRADING,upgradingClusterVersion.getState());
assertTrue(hostVersions.size() > 0);
for ( HostVersionEntity hostVersion : hostVersions) {
assertEquals(RepositoryVersionState.UPGRADED,hostVersion.getState());
}
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,targetRepo);
commandParams.put(FinalizeUpgradeAction.ORIGINAL_STACK_KEY,sourceStack.getStackId());
commandParams.put(FinalizeUpgradeAction.TARGET_STACK_KEY,targetStack.getStackId());
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ComponentVersionCheckAction action=m_injector.getInstance(ComponentVersionCheckAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.FAILED.name(),report.getStatus());
assertEquals(-1,report.getExitCode());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMatchingVersions() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_21_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_1_1_1;
makeUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
AmbariMetaInfo metaInfo=m_injector.getInstance(AmbariMetaInfo.class);
RepositoryInfo repo=metaInfo.getRepository(sourceStack.getStackName(),sourceStack.getStackVersion(),"redhat6",sourceStack.getStackId());
assertEquals(HDP_211_CENTOS6_REPO_URL,repo.getBaseUrl());
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,targetRepo);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ComponentVersionCheckAction action=m_injector.getInstance(ComponentVersionCheckAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
assertEquals(0,report.getExitCode());
}
Class: org.apache.ambari.server.serveraction.upgrades.ConfigureActionTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigActionUpgradeAcrossStack() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setCurrentStackVersion(HDP_211_STACK);
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("initLimit","10");
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
List configurations=new ArrayList();
ConfigurationKeyValue keyValue=new ConfigurationKeyValue();
configurations.add(keyValue);
keyValue.key="initLimit";
keyValue.value="11";
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
commandParams.put(ConfigureTask.PARAMETER_KEY_VALUE_PAIRS,new Gson().toJson(configurations));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertNotNull(config);
assertEquals("version2",config.getTag());
assertEquals("11",config.getProperties().get("initLimit"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCoerceValueOnCopy() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("zoo.server.csv","c6401,c6402, c6403");
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
List transfers=new ArrayList();
Transfer transfer=new Transfer();
transfer.operation=TransferOperation.COPY;
transfer.coerceTo=TransferCoercionType.YAML_ARRAY;
transfer.fromKey="zoo.server.csv";
transfer.toKey="zoo.server.array";
transfer.defaultValue="['foo','bar']";
transfers.add(transfer);
commandParams.put(ConfigureTask.PARAMETER_TRANSFERS,new Gson().toJson(transfers));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
executionCommand.setRoleParams(new HashMap());
executionCommand.getRoleParams().put(ServerAction.ACTION_USER_NAME,"username");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(3,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertNotNull(config);
assertFalse("version2".equals(config.getTag()));
Map map=config.getProperties();
assertEquals("c6401,c6402, c6403",map.get("zoo.server.csv"));
assertEquals("['c6401','c6402','c6403']",map.get("zoo.server.array"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that DELETE "*" with edit preserving works correctly.
* @throws Exception
*/
@Test public void testDeletePreserveChanges() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("tickTime","2000");
put("foo","bar");
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
List transfers=new ArrayList<>();
Transfer transfer=new Transfer();
transfer.operation=TransferOperation.DELETE;
transfer.deleteKey="*";
transfer.preserveEdits=true;
transfers.add(transfer);
commandParams.put(ConfigureTask.PARAMETER_TRANSFERS,new Gson().toJson(transfers));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
executionCommand.setRoleParams(new HashMap());
executionCommand.getRoleParams().put(ServerAction.ACTION_USER_NAME,"username");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(3,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertNotNull(config);
assertFalse("version2".equals(config.getTag()));
Map map=config.getProperties();
assertEquals("bar",map.get("foo"));
assertFalse(map.containsKey("tickTime"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigTransferCopy() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("initLimit","10");
put("copyIt","10");
put("moveIt","10");
put("deleteIt","10");
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
List configurations=new ArrayList<>();
ConfigurationKeyValue keyValue=new ConfigurationKeyValue();
configurations.add(keyValue);
keyValue.key="initLimit";
keyValue.value="11";
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
commandParams.put(ConfigureTask.PARAMETER_KEY_VALUE_PAIRS,new Gson().toJson(configurations));
List transfers=new ArrayList<>();
Transfer transfer=new Transfer();
transfer.operation=TransferOperation.COPY;
transfer.fromKey="copyIt";
transfer.toKey="copyKey";
transfers.add(transfer);
transfer=new Transfer();
transfer.operation=TransferOperation.COPY;
transfer.fromKey="copiedFromMissingKeyWithDefault";
transfer.toKey="copiedToMissingKeyWithDefault";
transfer.defaultValue="defaultValue";
transfers.add(transfer);
transfer=new Transfer();
transfer.operation=TransferOperation.MOVE;
transfer.fromKey="moveIt";
transfer.toKey="movedKey";
transfers.add(transfer);
transfer=new Transfer();
transfer.operation=TransferOperation.MOVE;
transfer.fromKey="movedFromKeyMissingWithDefault";
transfer.toKey="movedToMissingWithDefault";
transfer.defaultValue="defaultValue2";
transfer.mask=true;
transfers.add(transfer);
transfer=new Transfer();
transfer.operation=TransferOperation.DELETE;
transfer.deleteKey="deleteIt";
transfers.add(transfer);
commandParams.put(ConfigureTask.PARAMETER_TRANSFERS,new Gson().toJson(transfers));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
executionCommand.setRoleParams(new HashMap());
executionCommand.getRoleParams().put(ServerAction.ACTION_USER_NAME,"username");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(3,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertNotNull(config);
assertFalse("version2".equals(config.getTag()));
Map map=config.getProperties();
assertEquals("11",map.get("initLimit"));
assertEquals("10",map.get("copyIt"));
assertTrue(map.containsKey("copyKey"));
assertEquals(map.get("copyIt"),map.get("copyKey"));
assertFalse(map.containsKey("moveIt"));
assertTrue(map.containsKey("movedKey"));
assertFalse(map.containsKey("deletedKey"));
assertTrue(map.containsKey("copiedToMissingKeyWithDefault"));
assertEquals("defaultValue",map.get("copiedToMissingKeyWithDefault"));
assertTrue(map.containsKey("movedToMissingWithDefault"));
assertEquals("defaultValue2",map.get("movedToMissingWithDefault"));
transfers.clear();
transfer=new Transfer();
transfer.operation=TransferOperation.DELETE;
transfer.deleteKey="*";
transfer.preserveEdits=true;
transfer.keepKeys.add("copyKey");
transfer.keepKeys.add("keyNotExisting");
transfer.keepKeys.add(null);
transfers.add(transfer);
commandParams.put(ConfigureTask.PARAMETER_TRANSFERS,new Gson().toJson(transfers));
report=action.execute(null);
assertNotNull(report);
assertEquals(4,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
map=config.getProperties();
assertEquals(6,map.size());
assertTrue(map.containsKey("initLimit"));
assertTrue(map.containsKey("copyKey"));
assertFalse(map.containsKey("keyNotExisting"));
assertFalse(map.containsKey(null));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMultipleKeyValuesPerTask() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setCurrentStackVersion(HDP_211_STACK);
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("fooKey","barValue");
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
List configurations=new ArrayList();
ConfigurationKeyValue fooKey2=new ConfigurationKeyValue();
configurations.add(fooKey2);
fooKey2.key="fooKey2";
fooKey2.value="barValue2";
ConfigurationKeyValue fooKey3=new ConfigurationKeyValue();
configurations.add(fooKey3);
fooKey3.key="fooKey3";
fooKey3.value="barValue3";
fooKey3.mask=true;
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
commandParams.put(ConfigureTask.PARAMETER_KEY_VALUE_PAIRS,new Gson().toJson(configurations));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertNotNull(config);
assertEquals("barValue",config.getProperties().get("fooKey"));
assertEquals("barValue2",config.getProperties().get("fooKey2"));
assertEquals("barValue3",config.getProperties().get("fooKey3"));
assertTrue(report.getStdOut().contains("******"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testValueReplacement() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("key_to_replace","My New Cat");
put("key_with_no_match","WxyAndZ");
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
List replacements=new ArrayList();
Replace replace=new Replace();
replace.key="key_to_replace";
replace.find="New Cat";
replace.replaceWith="Wet Dog";
replacements.add(replace);
replace=new Replace();
replace.key="key_with_no_match";
replace.find="abc";
replace.replaceWith="def";
replacements.add(replace);
commandParams.put(ConfigureTask.PARAMETER_REPLACEMENTS,new Gson().toJson(replacements));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
executionCommand.setRoleParams(new HashMap());
executionCommand.getRoleParams().put(ServerAction.ACTION_USER_NAME,"username");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(3,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertNotNull(config);
assertFalse("version2".equals(config.getTag()));
assertEquals("My Wet Dog",config.getProperties().get("key_to_replace"));
assertEquals("WxyAndZ",config.getProperties().get("key_with_no_match"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that replacing a {@code null} value works.
* @throws Exception
*/
@Test public void testValueReplacementWithMissingConfigurations() throws Exception {
makeUpgradeCluster();
Cluster c=m_injector.getInstance(Clusters.class).getCluster("c1");
assertEquals(1,c.getConfigsByType("zoo.cfg").size());
c.setDesiredStackVersion(HDP_220_STACK);
ConfigFactory cf=m_injector.getInstance(ConfigFactory.class);
Config config=cf.createNew(c,"zoo.cfg",new HashMap(){
{
put("existing","This exists!");
put("missing",null);
}
}
,new HashMap>());
config.setTag("version2");
config.persist();
c.addConfig(config);
c.addDesiredConfig("user",Collections.singleton(config));
assertEquals(2,c.getConfigsByType("zoo.cfg").size());
Map commandParams=new HashMap();
commandParams.put("upgrade_direction","upgrade");
commandParams.put("version",HDP_2_2_0_1);
commandParams.put("clusterName","c1");
commandParams.put(ConfigureTask.PARAMETER_CONFIG_TYPE,"zoo.cfg");
List replacements=new ArrayList();
Replace replace=new Replace();
replace.key="missing";
replace.find="foo";
replace.replaceWith="bar";
replacements.add(replace);
commandParams.put(ConfigureTask.PARAMETER_REPLACEMENTS,new Gson().toJson(replacements));
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
executionCommand.setRoleParams(new HashMap());
executionCommand.getRoleParams().put(ServerAction.ACTION_USER_NAME,"username");
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
ConfigureAction action=m_injector.getInstance(ConfigureAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(3,c.getConfigsByType("zoo.cfg").size());
config=c.getDesiredConfigByType("zoo.cfg");
assertEquals(null,config.getProperties().get("missing"));
}
Class: org.apache.ambari.server.serveraction.upgrades.RangerConfigCalculationTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAction() throws Exception {
Map commandParams=new HashMap();
commandParams.put("clusterName","c1");
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
HostRoleCommand hrc=EasyMock.createMock(HostRoleCommand.class);
expect(hrc.getRequestId()).andReturn(1L).anyTimes();
expect(hrc.getStageId()).andReturn(2L).anyTimes();
expect(hrc.getExecutionCommandWrapper()).andReturn(new ExecutionCommandWrapper(executionCommand)).anyTimes();
replay(hrc);
RangerConfigCalculation action=new RangerConfigCalculation();
m_clusterField.set(action,m_clusters);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hrc);
CommandReport report=action.execute(null);
assertNotNull(report);
Cluster c=m_clusters.getCluster("c1");
Config config=c.getDesiredConfigByType("ranger-admin-site");
Map map=config.getProperties();
assertTrue(map.containsKey("ranger.jpa.jdbc.driver"));
assertTrue(map.containsKey("ranger.jpa.jdbc.url"));
assertTrue(map.containsKey("ranger.jpa.jdbc.dialect"));
assertTrue(map.containsKey("ranger.jpa.audit.jdbc.driver"));
assertTrue(map.containsKey("ranger.jpa.audit.jdbc.url"));
assertTrue(map.containsKey("ranger.jpa.audit.jdbc.dialect"));
assertEquals("com.mysql.jdbc.Driver",map.get("ranger.jpa.jdbc.driver"));
assertEquals("jdbc:mysql://host1/ranger",map.get("ranger.jpa.jdbc.url"));
assertEquals("org.eclipse.persistence.platform.database.MySQLPlatform",map.get("ranger.jpa.jdbc.dialect"));
assertEquals("com.mysql.jdbc.Driver",map.get("ranger.jpa.audit.jdbc.driver"));
assertEquals("jdbc:mysql://host1/ranger_audit",map.get("ranger.jpa.audit.jdbc.url"));
assertEquals("org.eclipse.persistence.platform.database.MySQLPlatform",map.get("ranger.jpa.audit.jdbc.dialect"));
config=c.getDesiredConfigByType("admin-properties");
config.getProperties().put("DB_FLAVOR","oracle");
report=action.execute(null);
assertNotNull(report);
config=c.getDesiredConfigByType("ranger-admin-site");
map=config.getProperties();
assertEquals("oracle.jdbc.OracleDriver",map.get("ranger.jpa.jdbc.driver"));
assertEquals("jdbc:oracle:thin:@//host1",map.get("ranger.jpa.jdbc.url"));
assertEquals("org.eclipse.persistence.platform.database.OraclePlatform",map.get("ranger.jpa.jdbc.dialect"));
assertEquals("oracle.jdbc.OracleDriver",map.get("ranger.jpa.audit.jdbc.driver"));
assertEquals("jdbc:oracle:thin:@//host1",map.get("ranger.jpa.audit.jdbc.url"));
assertEquals("org.eclipse.persistence.platform.database.OraclePlatform",map.get("ranger.jpa.audit.jdbc.dialect"));
}
Class: org.apache.ambari.server.serveraction.upgrades.SparkShufflePropertyConfigTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAction() throws Exception {
ExecutionCommand executionCommand=new ExecutionCommand();
Map commandParams=new HashMap<>();
HostRoleCommand hrc=EasyMock.createMock(HostRoleCommand.class);
SparkShufflePropertyConfig action=new SparkShufflePropertyConfig();
commandParams.put("clusterName","c1");
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName("c1");
expect(hrc.getRequestId()).andReturn(1L).anyTimes();
expect(hrc.getStageId()).andReturn(2L).anyTimes();
expect(hrc.getExecutionCommandWrapper()).andReturn(new ExecutionCommandWrapper(executionCommand)).anyTimes();
replay(cluster,hrc);
clusterField.set(action,m_clusters);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hrc);
CommandReport report=action.execute(null);
assertNotNull(report);
Cluster c=m_clusters.getCluster("c1");
Config config=c.getDesiredConfigByType("yarn-site");
Map map=config.getProperties();
assertTrue(map.containsKey("yarn.nodemanager.aux-services"));
assertTrue(map.containsKey("yarn.nodemanager.aux-services.spark_shuffle.class"));
assertEquals("some_service,spark_shuffle",map.get("yarn.nodemanager.aux-services"));
assertEquals("org.apache.spark.network.yarn.YarnShuffleService",map.get("yarn.nodemanager.aux-services.spark_shuffle.class"));
}
Class: org.apache.ambari.server.serveraction.upgrades.UpgradeActionTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that finalization can occur when the cluster state is{@link RepositoryVersionState#UPGRADING} if all of the hosts and components
* are reporting correct versions and states.
* @throws Exception
*/
@Test public void testFinalizeUpgradeWithClusterStateInconsistencies() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_22_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_2_0_1;
makeCrossStackUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
Cluster cluster=clusters.getCluster(clusterName);
Service service=installService(cluster,"HDFS");
addServiceComponent(cluster,service,"NAMENODE");
addServiceComponent(cluster,service,"DATANODE");
createNewServiceComponentHost(cluster,"HDFS","NAMENODE","h1");
createNewServiceComponentHost(cluster,"HDFS","DATANODE","h1");
createConfigs(cluster);
cluster.setCurrentStackVersion(sourceStack);
cluster.setDesiredStackVersion(targetStack);
cluster.getServiceComponentHosts("HDFS","NAMENODE").get(0).setVersion(targetRepo);
cluster.getServiceComponentHosts("HDFS","DATANODE").get(0).setVersion(targetRepo);
ClusterVersionEntity upgradingClusterVersion=clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,HDP_22_STACK,targetRepo);
upgradingClusterVersion.setState(RepositoryVersionState.UPGRADING);
upgradingClusterVersion=clusterVersionDAO.merge(upgradingClusterVersion);
upgradingClusterVersion=clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,HDP_22_STACK,targetRepo);
List hostVersions=hostVersionDAO.findByClusterStackAndVersion(clusterName,HDP_22_STACK,targetRepo);
assertEquals(RepositoryVersionState.UPGRADING,upgradingClusterVersion.getState());
assertTrue(hostVersions.size() > 0);
for ( HostVersionEntity hostVersion : hostVersions) {
assertEquals(RepositoryVersionState.UPGRADED,hostVersion.getState());
}
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,targetRepo);
commandParams.put(FinalizeUpgradeAction.ORIGINAL_STACK_KEY,sourceStack.getStackId());
commandParams.put(FinalizeUpgradeAction.TARGET_STACK_KEY,targetStack.getStackId());
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
StackId currentStackId=cluster.getCurrentStackVersion();
StackId desiredStackId=cluster.getDesiredStackVersion();
assertEquals(desiredStackId,currentStackId);
assertEquals(targetStack,currentStackId);
assertEquals(targetStack,desiredStackId);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests some of the action items are completed when finalizing downgrade
* across stacks (HDP 2.2 -> HDP 2.3).
* @throws Exception
*/
@Test public void testFinalizeDowngradeAcrossStacks() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_22_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_2_0_1;
makeCrossStackUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
Cluster cluster=clusters.getCluster(clusterName);
Service service=installService(cluster,"HDFS");
addServiceComponent(cluster,service,"NAMENODE");
addServiceComponent(cluster,service,"DATANODE");
createNewServiceComponentHost(cluster,"HDFS","NAMENODE","h1");
createNewServiceComponentHost(cluster,"HDFS","DATANODE","h1");
createConfigs(cluster);
cluster.setCurrentStackVersion(sourceStack);
cluster.setDesiredStackVersion(targetStack);
createConfigs(cluster);
cluster=clusters.getCluster(clusterName);
Collection configs=cluster.getAllConfigs();
assertEquals(8,configs.size());
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"downgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,sourceRepo);
commandParams.put(FinalizeUpgradeAction.ORIGINAL_STACK_KEY,sourceStack.getStackId());
commandParams.put(FinalizeUpgradeAction.TARGET_STACK_KEY,targetStack.getStackId());
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
HostVersionDAO dao=m_injector.getInstance(HostVersionDAO.class);
List hosts=dao.findByClusterStackAndVersion(clusterName,targetStack,targetRepo);
assertFalse(hosts.isEmpty());
for ( HostVersionEntity hve : hosts) {
assertFalse(hve.getState() == RepositoryVersionState.INSTALLED);
}
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
StackId currentStackId=cluster.getCurrentStackVersion();
StackId desiredStackId=cluster.getDesiredStackVersion();
assertEquals(desiredStackId,currentStackId);
assertEquals(sourceStack,currentStackId);
assertEquals(sourceStack,desiredStackId);
cluster=clusters.getCluster(clusterName);
configs=cluster.getAllConfigs();
assertEquals(4,configs.size());
hosts=dao.findByClusterStackAndVersion(clusterName,targetStack,targetRepo);
assertFalse(hosts.isEmpty());
for ( HostVersionEntity hve : hosts) {
assertTrue(hve.getState() == RepositoryVersionState.INSTALLED);
}
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeDowngrade() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_21_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_1_1_1;
makeDowngradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"downgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,sourceRepo);
commandParams.put(FinalizeUpgradeAction.ORIGINAL_STACK_KEY,sourceStack.getStackId());
commandParams.put(FinalizeUpgradeAction.TARGET_STACK_KEY,targetStack.getStackId());
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
for ( HostVersionEntity entity : hostVersionDAO.findByClusterAndHost(clusterName,"h1")) {
if (entity.getRepositoryVersion().getVersion().equals(sourceRepo)) {
assertEquals(RepositoryVersionState.CURRENT,entity.getState());
}
else if (entity.getRepositoryVersion().getVersion().equals(targetRepo)) {
assertEquals(RepositoryVersionState.INSTALLED,entity.getState());
}
}
for ( ClusterVersionEntity entity : clusterVersionDAO.findByCluster(clusterName)) {
if (entity.getRepositoryVersion().getVersion().equals(sourceRepo)) {
assertEquals(RepositoryVersionState.CURRENT,entity.getState());
}
else if (entity.getRepositoryVersion().getVersion().equals(targetRepo)) {
assertEquals(RepositoryVersionState.INSTALLED,entity.getState());
}
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeUpgradeAcrossStacks() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_22_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_2_0_1;
makeCrossStackUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
Cluster cluster=clusters.getCluster(clusterName);
cluster.setCurrentStackVersion(sourceStack);
cluster.setDesiredStackVersion(targetStack);
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,targetRepo);
commandParams.put(FinalizeUpgradeAction.ORIGINAL_STACK_KEY,sourceStack.getStackId());
commandParams.put(FinalizeUpgradeAction.TARGET_STACK_KEY,targetStack.getStackId());
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
StackId currentStackId=cluster.getCurrentStackVersion();
StackId desiredStackId=cluster.getDesiredStackVersion();
assertEquals(desiredStackId,currentStackId);
assertEquals(targetStack,currentStackId);
assertEquals(targetStack,desiredStackId);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* During an Express Upgrade that crosses a stack version, Ambari calls UpdateDesiredStackAction
* in order to change the stack and apply configs.
* The configs that are applied must be saved with the username that is passed in the role params.
*/
@Test public void testExpressUpgradeUpdateDesiredStackAction() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_22_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_2_0_1;
String upgradePackName="upgrade_nonrolling_new_stack";
AmbariMetaInfo metaInfo=m_injector.getInstance(AmbariMetaInfo.class);
Map packs=metaInfo.getUpgradePacks(sourceStack.getStackName(),sourceStack.getStackVersion());
Assert.assertTrue(packs.containsKey(upgradePackName));
makeCrossStackUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
RepositoryVersionEntity targetRve=repoVersionDAO.findByStackNameAndVersion("HDP",targetRepo);
Assert.assertNotNull(targetRve);
Cluster cluster=clusters.getCluster(clusterName);
Service zk=installService(cluster,"ZOOKEEPER");
addServiceComponent(cluster,zk,"ZOOKEEPER_SERVER");
addServiceComponent(cluster,zk,"ZOOKEEPER_CLIENT");
createNewServiceComponentHost(cluster,"ZOOKEEPER","ZOOKEEPER_SERVER","h1");
createNewServiceComponentHost(cluster,"ZOOKEEPER","ZOOKEEPER_CLIENT","h1");
Service hdfs=installService(cluster,"HDFS");
addServiceComponent(cluster,hdfs,"NAMENODE");
addServiceComponent(cluster,hdfs,"DATANODE");
createNewServiceComponentHost(cluster,"HDFS","NAMENODE","h1");
createNewServiceComponentHost(cluster,"HDFS","DATANODE","h1");
createConfigs(cluster);
Collection configs=cluster.getAllConfigs();
Assert.assertFalse(configs.isEmpty());
Map commandParams=new HashMap();
commandParams.put(UpdateDesiredStackAction.COMMAND_PARAM_ORIGINAL_STACK,sourceStack.getStackId());
commandParams.put(UpdateDesiredStackAction.COMMAND_PARAM_TARGET_STACK,targetStack.getStackId());
commandParams.put(UpdateDesiredStackAction.COMMAND_PARAM_DIRECTION,Direction.UPGRADE.toString());
commandParams.put(UpdateDesiredStackAction.COMMAND_PARAM_VERSION,targetRepo);
commandParams.put(UpdateDesiredStackAction.COMMAND_PARAM_UPGRADE_PACK,upgradePackName);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
Map roleParams=new HashMap<>();
String userName="admin";
roleParams.put(ServerAction.ACTION_USER_NAME,userName);
executionCommand.setRoleParams(roleParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
UpdateDesiredStackAction action=m_injector.getInstance(UpdateDesiredStackAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
List configVersionsBefore=cluster.getServiceConfigVersions();
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
List configVersionsAfter=cluster.getServiceConfigVersions();
Assert.assertFalse(configVersionsAfter.isEmpty());
assertTrue(configVersionsAfter.size() - configVersionsBefore.size() >= 1);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test a case in which a customer performs an upgrade from HDP 2.1 to 2.2 (e.g., 2.2.0.0), but skips the step to
* finalize, which calls "Save DB State". Therefore, the cluster's current stack is still on HDP 2.1.
* They can still modify the database manually to mark HDP 2.2 as CURRENT in the cluster_version and then begin
* another upgrade to 2.2.0.2 and then downgrade.
* In the downgrade, the original stack is still 2.1 but the stack for the version marked as CURRENT is 2.2; this
* mismatch means that the downgrade should not delete configs and will report a warning.
* @throws Exception
*/
@Test public void testFinalizeDowngradeWhenDidNotFinalizePreviousUpgrade() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId midStack=HDP_22_STACK;
StackId targetStack=HDP_22_STACK;
String sourceRepo=HDP_2_1_1_0;
String midRepo=HDP_2_2_0_1;
String targetRepo=HDP_2_2_0_2;
makeTwoUpgradesWhereLastDidNotComplete(sourceStack,sourceRepo,midStack,midRepo,targetStack,targetRepo);
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"downgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,midRepo);
commandParams.put(FinalizeUpgradeAction.ORIGINAL_STACK_KEY,sourceStack.getStackId());
commandParams.put(FinalizeUpgradeAction.TARGET_STACK_KEY,targetStack.getStackId());
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.FAILED.name(),report.getStatus());
assertTrue(report.getStdErr().contains(FinalizeUpgradeAction.PREVIOUS_UPGRADE_NOT_COMPLETED_MSG));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFinalizeUpgrade() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_21_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_1_1_1;
makeUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
AmbariMetaInfo metaInfo=m_injector.getInstance(AmbariMetaInfo.class);
AmbariCustomCommandExecutionHelper helper=m_injector.getInstance(AmbariCustomCommandExecutionHelper.class);
Host host=clusters.getHost("h1");
Cluster cluster=clusters.getCluster(clusterName);
RepositoryInfo repo=metaInfo.getRepository(sourceStack.getStackName(),sourceStack.getStackVersion(),"redhat6",sourceStack.getStackId());
assertEquals(HDP_211_CENTOS6_REPO_URL,repo.getBaseUrl());
verifyBaseRepoURL(helper,cluster,host,HDP_211_CENTOS6_REPO_URL);
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,targetRepo);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
verifyBaseRepoURL(helper,cluster,host,"http://foo1");
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that finalize still works when there are hosts which are already{@link RepositoryVersionState#CURRENT}.
* @throws Exception
*/
@Test public void testFinalizeWithHostsAlreadyCurrent() throws Exception {
StackId sourceStack=HDP_21_STACK;
StackId targetStack=HDP_21_STACK;
String sourceRepo=HDP_2_1_1_0;
String targetRepo=HDP_2_1_1_1;
makeUpgradeCluster(sourceStack,sourceRepo,targetStack,targetRepo);
List hostVersions=hostVersionDAO.findAll();
for ( HostVersionEntity hostVersion : hostVersions) {
if (hostVersion.getState() == RepositoryVersionState.CURRENT) {
hostVersion.setState(RepositoryVersionState.INSTALLED);
}
else {
hostVersion.setState(RepositoryVersionState.CURRENT);
}
hostVersionDAO.merge(hostVersion);
}
AmbariMetaInfo metaInfo=m_injector.getInstance(AmbariMetaInfo.class);
AmbariCustomCommandExecutionHelper helper=m_injector.getInstance(AmbariCustomCommandExecutionHelper.class);
Host host=clusters.getHost("h1");
Cluster cluster=clusters.getCluster(clusterName);
RepositoryInfo repo=metaInfo.getRepository(sourceStack.getStackName(),sourceStack.getStackVersion(),"redhat6",sourceStack.getStackId());
assertEquals(HDP_211_CENTOS6_REPO_URL,repo.getBaseUrl());
verifyBaseRepoURL(helper,cluster,host,HDP_211_CENTOS6_REPO_URL);
Map commandParams=new HashMap();
commandParams.put(FinalizeUpgradeAction.UPGRADE_DIRECTION_KEY,"upgrade");
commandParams.put(FinalizeUpgradeAction.VERSION_KEY,targetRepo);
ExecutionCommand executionCommand=new ExecutionCommand();
executionCommand.setCommandParams(commandParams);
executionCommand.setClusterName(clusterName);
HostRoleCommand hostRoleCommand=hostRoleCommandFactory.create(null,null,null,null);
hostRoleCommand.setExecutionCommandWrapper(new ExecutionCommandWrapper(executionCommand));
FinalizeUpgradeAction action=m_injector.getInstance(FinalizeUpgradeAction.class);
action.setExecutionCommand(executionCommand);
action.setHostRoleCommand(hostRoleCommand);
CommandReport report=action.execute(null);
assertNotNull(report);
assertEquals(HostRoleStatus.COMPLETED.name(),report.getStatus());
}
Class: org.apache.ambari.server.stack.ComponentModuleTest InternalCallVerifier EqualityVerifier
@Test public void testResolve_ClientConfigFiles(){
List clientConfigs=new ArrayList();
ClientConfigFileDefinition clientConfig1=new ClientConfigFileDefinition();
clientConfig1.setType("type1");
clientConfig1.setDictionaryName("dictName1");
clientConfig1.setFileName("filename1");
ClientConfigFileDefinition clientConfig2=new ClientConfigFileDefinition();
clientConfig1.setType("type1");
clientConfig1.setDictionaryName("dictName1");
clientConfig1.setFileName("filename1");
clientConfigs.add(clientConfig1);
clientConfigs.add(clientConfig2);
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setClientConfigFiles(clientConfigs);
assertEquals(clientConfigs,resolveComponent(info,parentInfo).getModuleInfo().getClientConfigFiles());
info.setClientConfigFiles(clientConfigs);
parentInfo.setClientConfigFiles(null);
assertEquals(clientConfigs,resolveComponent(info,parentInfo).getModuleInfo().getClientConfigFiles());
List clientConfigs2=new ArrayList();
ClientConfigFileDefinition clientConfig3=new ClientConfigFileDefinition();
clientConfig3.setType("type1");
clientConfig3.setDictionaryName("dictName1");
clientConfig3.setFileName("DIFFERENT filename");
clientConfigs2.add(clientConfig3);
info.setClientConfigFiles(clientConfigs2);
parentInfo.setClientConfigFiles(clientConfigs);
assertEquals(clientConfigs2,resolveComponent(info,parentInfo).getModuleInfo().getClientConfigFiles());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_ClientToUpdateConfigs(){
List clientsToUpdate=new ArrayList();
String client1="one";
String client2="two";
clientsToUpdate.add(client1);
clientsToUpdate.add(client2);
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setClientsToUpdateConfigs(clientsToUpdate);
assertEquals(clientsToUpdate,resolveComponent(info,parentInfo).getModuleInfo().getClientsToUpdateConfigs());
info.setClientsToUpdateConfigs(clientsToUpdate);
parentInfo.setClientsToUpdateConfigs(null);
assertEquals(clientsToUpdate,resolveComponent(info,parentInfo).getModuleInfo().getClientsToUpdateConfigs());
List clientsToUpdate2=new ArrayList();
String client3="two";
String client4="four";
clientsToUpdate2.add(client3);
clientsToUpdate2.add(client4);
info.setClientsToUpdateConfigs(clientsToUpdate2);
parentInfo.setClientsToUpdateConfigs(clientsToUpdate);
List resolvedClientsToUpdate=resolveComponent(info,parentInfo).getModuleInfo().getClientsToUpdateConfigs();
assertEquals(2,resolvedClientsToUpdate.size());
assertTrue(resolvedClientsToUpdate.contains(client3));
assertTrue(resolvedClientsToUpdate.contains(client4));
}
InternalCallVerifier EqualityVerifier
@Test public void testResolve_AutoDeploy(){
AutoDeployInfo autoDeployInfo=new AutoDeployInfo();
autoDeployInfo.setEnabled(true);
autoDeployInfo.setCoLocate("foo/bar");
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setAutoDeploy(autoDeployInfo);
assertEquals(autoDeployInfo,resolveComponent(info,parentInfo).getModuleInfo().getAutoDeploy());
info.setAutoDeploy(autoDeployInfo);
parentInfo.setAutoDeploy(null);
assertEquals(autoDeployInfo,resolveComponent(info,parentInfo).getModuleInfo().getAutoDeploy());
AutoDeployInfo autoDeployInfo2=new AutoDeployInfo();
info.setAutoDeploy(autoDeployInfo);
parentInfo.setAutoDeploy(autoDeployInfo2);
assertEquals(autoDeployInfo,resolveComponent(info,parentInfo).getModuleInfo().getAutoDeploy());
}
InternalCallVerifier EqualityVerifier
@Test public void testResolve_DisplayName(){
String displayName="foo";
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setDisplayName(displayName);
assertEquals(displayName,resolveComponent(info,parentInfo).getModuleInfo().getDisplayName());
info.setDisplayName(displayName);
parentInfo.setDisplayName(null);
assertEquals(displayName,resolveComponent(info,parentInfo).getModuleInfo().getDisplayName());
String displayName2="foo2";
info.setDisplayName(displayName2);
parentInfo.setDisplayName(displayName);
assertEquals(displayName2,resolveComponent(info,parentInfo).getModuleInfo().getDisplayName());
}
InternalCallVerifier IdentityVerifier
@Test public void testResolve_CommandScript(){
CommandScriptDefinition commandScript=new CommandScriptDefinition();
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setCommandScript(commandScript);
assertSame(commandScript,resolveComponent(info,parentInfo).getModuleInfo().getCommandScript());
info.setCommandScript(commandScript);
parentInfo.setCommandScript(null);
assertSame(commandScript,resolveComponent(info,parentInfo).getModuleInfo().getCommandScript());
CommandScriptDefinition commandScript2=createNiceMock(CommandScriptDefinition.class);
info.setCommandScript(commandScript);
parentInfo.setCommandScript(commandScript2);
assertSame(commandScript,resolveComponent(info,parentInfo).getModuleInfo().getCommandScript());
}
InternalCallVerifier BooleanVerifier
@Test public void testIsDeleted(){
ComponentInfo info=new ComponentInfo();
info.setName("foo");
ComponentModule component=new ComponentModule(info);
assertFalse(component.isDeleted());
info=new ComponentInfo();
info.setName("foo");
info.setDeleted(true);
component=new ComponentModule(info);
assertTrue(component.isDeleted());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetId(){
ComponentInfo info=new ComponentInfo();
info.setName("foo");
ComponentModule component=new ComponentModule(info);
assertEquals("foo",component.getId());
}
InternalCallVerifier EqualityVerifier
@Test public void testResolve_Category(){
String category="foo";
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setCategory(category);
assertEquals(category,resolveComponent(info,parentInfo).getModuleInfo().getCategory());
info.setCategory(category);
parentInfo.setCategory(null);
assertEquals(category,resolveComponent(info,parentInfo).getModuleInfo().getCategory());
String category2="foo2";
info.setCategory(category2);
parentInfo.setCategory(category);
assertEquals(category2,resolveComponent(info,parentInfo).getModuleInfo().getCategory());
}
InternalCallVerifier EqualityVerifier
@Test public void testResolve_Cardinality(){
String cardinality="foo";
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setCardinality(cardinality);
assertEquals("0+",resolveComponent(info,parentInfo).getModuleInfo().getCardinality());
info.setCardinality(cardinality);
parentInfo.setCardinality(null);
assertEquals(cardinality,resolveComponent(info,parentInfo).getModuleInfo().getCardinality());
String cardinality2="foo2";
info.setCardinality(cardinality2);
parentInfo.setCardinality(cardinality);
assertEquals(cardinality2,resolveComponent(info,parentInfo).getModuleInfo().getCardinality());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_Dependencies(){
List dependencies=new ArrayList();
DependencyInfo dependency1=new DependencyInfo();
dependency1.setName("service/one");
DependencyInfo dependency2=new DependencyInfo();
dependency2.setName("service/two");
dependencies.add(dependency1);
dependencies.add(dependency2);
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setDependencies(dependencies);
assertEquals(dependencies,resolveComponent(info,parentInfo).getModuleInfo().getDependencies());
info.setDependencies(dependencies);
parentInfo.setDependencies(null);
assertEquals(dependencies,resolveComponent(info,parentInfo).getModuleInfo().getDependencies());
List dependencies2=new ArrayList();
DependencyInfo dependency3=new DependencyInfo();
dependency3.setName("service/two");
DependencyInfo dependency4=new DependencyInfo();
dependency4.setName("service/four");
dependencies2.add(dependency3);
dependencies2.add(dependency4);
info.setDependencies(dependencies2);
parentInfo.setDependencies(dependencies);
List resolvedDependencies=resolveComponent(info,parentInfo).getModuleInfo().getDependencies();
assertEquals(3,resolvedDependencies.size());
assertTrue(resolvedDependencies.contains(dependency1));
assertTrue(resolvedDependencies.contains(dependency3));
assertTrue(resolvedDependencies.contains(dependency4));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_CustomCommands() throws Exception {
List commands=new ArrayList();
CustomCommandDefinition command1=new CustomCommandDefinition();
setPrivateField(command1,"name","one");
CustomCommandDefinition command2=new CustomCommandDefinition();
setPrivateField(command2,"name","two");
commands.add(command1);
commands.add(command2);
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setCustomCommands(commands);
assertEquals(commands,resolveComponent(info,parentInfo).getModuleInfo().getCustomCommands());
info.setCustomCommands(commands);
parentInfo.setCustomCommands(null);
assertEquals(commands,resolveComponent(info,parentInfo).getModuleInfo().getCustomCommands());
List commands2=new ArrayList();
CustomCommandDefinition command3=new CustomCommandDefinition();
setPrivateField(command3,"name","two");
CustomCommandDefinition command4=new CustomCommandDefinition();
setPrivateField(command4,"name","four");
commands2.add(command3);
commands2.add(command4);
info.setCustomCommands(commands2);
parentInfo.setCustomCommands(commands);
List resolvedCommands=resolveComponent(info,parentInfo).getModuleInfo().getCustomCommands();
assertEquals(3,resolvedCommands.size());
assertTrue(resolvedCommands.contains(command1));
assertTrue(resolvedCommands.contains(command3));
assertTrue(resolvedCommands.contains(command4));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_ConfigDependencies(){
List dependencies=new ArrayList();
String dependency1="one";
String dependency2="two";
dependencies.add(dependency1);
dependencies.add(dependency2);
ComponentInfo info=new ComponentInfo();
ComponentInfo parentInfo=new ComponentInfo();
parentInfo.setConfigDependencies(dependencies);
assertEquals(dependencies,resolveComponent(info,parentInfo).getModuleInfo().getConfigDependencies());
info.setConfigDependencies(dependencies);
parentInfo.setConfigDependencies(null);
assertEquals(dependencies,resolveComponent(info,parentInfo).getModuleInfo().getConfigDependencies());
List dependencies2=new ArrayList();
String dependency3="two";
String dependency4="four";
dependencies2.add(dependency3);
dependencies2.add(dependency4);
info.setConfigDependencies(dependencies2);
parentInfo.setConfigDependencies(dependencies);
List resolvedDependencies=resolveComponent(info,parentInfo).getModuleInfo().getConfigDependencies();
assertEquals(2,resolvedDependencies.size());
assertTrue(resolvedDependencies.contains(dependency3));
assertTrue(resolvedDependencies.contains(dependency4));
}
Class: org.apache.ambari.server.stack.QuickLinksConfigurationModuleTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testResolveInherit() throws Exception {
QuickLinks[] results=resolveQuickLinks("parent_quicklinks.json","child_quicklinks_to_inherit.json");
QuickLinks parentQuickLinks=results[0];
QuickLinks childQuickLinks=results[1];
QuickLinksConfiguration childQuickLinksConfig=childQuickLinks.getQuickLinksConfiguration();
assertNotNull(childQuickLinksConfig);
List links=childQuickLinksConfig.getLinks();
assertNotNull(links);
assertEquals(4,links.size());
assertEquals(4,parentQuickLinks.getQuickLinksConfiguration().getLinks().size());
Protocol protocol=childQuickLinksConfig.getProtocol();
assertNotNull(protocol);
assertEquals("https",protocol.getType());
assertEquals(1,protocol.getChecks().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testResolveMerge() throws Exception {
QuickLinks[] results=resolveQuickLinks("parent_quicklinks.json","child_quicklinks_to_merge.json");
QuickLinks parentQuickLinks=results[0];
QuickLinks childQuickLinks=results[1];
QuickLinksConfiguration childQuickLinksConfig=childQuickLinks.getQuickLinksConfiguration();
assertNotNull(childQuickLinksConfig);
List links=childQuickLinksConfig.getLinks();
assertNotNull(links);
assertEquals(7,links.size());
assertEquals(4,parentQuickLinks.getQuickLinksConfiguration().getLinks().size());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testResolveOverride() throws Exception {
QuickLinks[] results=resolveQuickLinks("parent_quicklinks.json","child_quicklinks_to_override.json");
QuickLinks parentQuickLinks=results[0];
QuickLinks childQuickLinks=results[1];
QuickLinksConfiguration childQuickLinksConfig=childQuickLinks.getQuickLinksConfiguration();
assertNotNull(childQuickLinksConfig);
List links=childQuickLinksConfig.getLinks();
assertNotNull(links);
assertEquals(7,links.size());
assertEquals(4,parentQuickLinks.getQuickLinksConfiguration().getLinks().size());
boolean hasLink=false;
for ( Link link : links) {
String name=link.getName();
if ("thread_stacks".equals(name)) {
hasLink=true;
Port port=link.getPort();
assertEquals("mapred-site",port.getSite());
}
}
assertTrue(hasLink);
Protocol protocol=childQuickLinksConfig.getProtocol();
assertNotNull(protocol);
assertEquals("http",protocol.getType());
assertEquals(3,protocol.getChecks().size());
List checks=protocol.getChecks();
for ( Check check : checks) {
assertEquals("mapred-site",check.getSite());
}
}
Class: org.apache.ambari.server.stack.ServiceModuleTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_MonitoringService() throws Exception {
Boolean isMonitoringService=true;
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setMonitoringService(isMonitoringService);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(isMonitoringService,service.getModuleInfo().isMonitoringService());
info.setMonitoringService(null);
parentInfo.setMonitoringService(isMonitoringService);
service=resolveService(info,parentInfo);
assertEquals(isMonitoringService,service.getModuleInfo().isMonitoringService());
info.setMonitoringService(isMonitoringService);
parentInfo.setMonitoringService(false);
service=resolveService(info,parentInfo);
assertEquals(isMonitoringService,service.getModuleInfo().isMonitoringService());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_OsSpecifics() throws Exception {
Map osSpecifics=new HashMap();
osSpecifics.put("foo",new ServiceOsSpecific());
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setOsSpecifics(osSpecifics);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(osSpecifics,service.getModuleInfo().getOsSpecifics());
info.setOsSpecifics(null);
parentInfo.setOsSpecifics(osSpecifics);
service=resolveService(info,parentInfo);
assertEquals(osSpecifics,service.getModuleInfo().getOsSpecifics());
Map osSpecifics2=new HashMap();
osSpecifics.put("bar",new ServiceOsSpecific());
info.setOsSpecifics(osSpecifics);
parentInfo.setOsSpecifics(osSpecifics2);
service=resolveService(info,parentInfo);
assertEquals(osSpecifics,service.getModuleInfo().getOsSpecifics());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testInvalidServiceInfo(){
ServiceInfo serviceInfo=new ServiceInfo();
serviceInfo.setName("TEST_SERVICE");
serviceInfo.setVersion("1.0.0");
serviceInfo.setValid(false);
serviceInfo.setErrors("Test error message");
ServiceModule serviceModule=createServiceModule(serviceInfo);
assertFalse("Service module should be invalid due to the service info being invalid !",serviceModule.isValid());
assertTrue("Service module error collection should contain error message that caused service info being invalid !",serviceModule.getErrors().contains("Test error message"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_KerberosDescriptorFile() throws Exception {
File kerberosDescriptorFile=new File("testKerberosDescriptorFile");
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
ServiceModule child=createServiceModule(info);
ServiceModule parent=createServiceModule(parentInfo);
assertEquals(kerberosDescriptorFile,child.getModuleInfo().getKerberosDescriptorFile());
parent.getModuleInfo().setKerberosDescriptorFile(null);
resolveService(child,parent);
assertEquals(kerberosDescriptorFile,child.getModuleInfo().getKerberosDescriptorFile());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setKerberosDescriptorFile(kerberosDescriptorFile);
child.getModuleInfo().setKerberosDescriptorFile(null);
resolveService(child,parent);
assertEquals(kerberosDescriptorFile,child.getModuleInfo().getKerberosDescriptorFile());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setKerberosDescriptorFile(new File("someOtherDir"));
child.getModuleInfo().setKerberosDescriptorFile(kerberosDescriptorFile);
resolveService(child,parent);
assertEquals(kerberosDescriptorFile,child.getModuleInfo().getKerberosDescriptorFile());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_ConfigDependencies() throws Exception {
List configDependencies=new ArrayList();
configDependencies.add("foo");
configDependencies.add("bar");
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setConfigDependencies(configDependencies);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(configDependencies,service.getModuleInfo().getConfigDependencies());
info.setConfigDependencies(null);
parentInfo.setConfigDependencies(configDependencies);
service=resolveService(info,parentInfo);
assertEquals(configDependencies,service.getModuleInfo().getConfigDependencies());
List parentCustomCommands=new ArrayList();
parentCustomCommands.add("bar");
parentCustomCommands.add("other");
info.setConfigDependencies(configDependencies);
parentInfo.setConfigDependencies(parentCustomCommands);
service=resolveService(info,parentInfo);
Collection mergedConfigDependencies=service.getModuleInfo().getConfigDependencies();
assertEquals(3,mergedConfigDependencies.size());
assertTrue(mergedConfigDependencies.contains("foo"));
assertTrue(mergedConfigDependencies.contains("bar"));
assertTrue(mergedConfigDependencies.contains("other"));
info.setConfigDependencies(null);
parentInfo.setConfigDependencies(null);
service=resolveService(info,parentInfo);
assertTrue(service.getModuleInfo().getConfigDependencies().isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_Comment() throws Exception {
String comment="test comment";
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setComment(comment);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(comment,service.getModuleInfo().getComment());
info.setComment(null);
parentInfo.setComment(comment);
service=resolveService(info,parentInfo);
assertEquals(comment,service.getModuleInfo().getComment());
info.setComment(comment);
parentInfo.setComment("other comment");
service=resolveService(info,parentInfo);
assertEquals(comment,service.getModuleInfo().getComment());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_CommandScript() throws Exception {
CommandScriptDefinition commandScript=new CommandScriptDefinition();
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setCommandScript(commandScript);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(commandScript,service.getModuleInfo().getCommandScript());
info.setCommandScript(null);
parentInfo.setCommandScript(commandScript);
service=resolveService(info,parentInfo);
assertEquals(commandScript,service.getModuleInfo().getCommandScript());
CommandScriptDefinition commandScript2=new CommandScriptDefinition();
info.setCommandScript(commandScript);
parentInfo.setCommandScript(commandScript2);
service=resolveService(info,parentInfo);
assertEquals(commandScript,service.getModuleInfo().getCommandScript());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testMergeServicePropertiesInheritFromParent() throws Exception {
ServiceInfo serviceInfo=new ServiceInfo();
ServiceInfo parentServiceInfo=new ServiceInfo();
ServicePropertyInfo p1=new ServicePropertyInfo();
p1.setName("P1");
p1.setValue("V1");
ServicePropertyInfo p2=new ServicePropertyInfo();
p2.setName("P2");
p2.setValue("V2");
List parentServicePropertyList=Lists.newArrayList(p1,p2);
parentServiceInfo.setServicePropertyList(parentServicePropertyList);
ServiceModule serviceModule=resolveService(serviceInfo,parentServiceInfo);
Map parentServiceProperties=ImmutableMap.builder().put("P1","V1").put("P2","V2").put(ServiceInfo.DEFAULT_SERVICE_INSTALLABLE_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MANAGED_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MONITORED_PROPERTY).build();
assertEquals(parentServicePropertyList,serviceModule.getModuleInfo().getServicePropertyList());
assertEquals(parentServiceProperties,serviceModule.getModuleInfo().getServiceProperties());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_Configuration__ExcludedTypes() throws Exception {
ServiceInfo info=new ServiceInfo();
info.setExcludedConfigTypes(Collections.singleton("BAR"));
Collection fooProperties=new ArrayList();
PropertyInfo prop1=new PropertyInfo();
prop1.setName("name1");
prop1.setValue("val1");
fooProperties.add(prop1);
PropertyInfo prop2=new PropertyInfo();
prop2.setName("name2");
prop2.setValue("val2");
fooProperties.add(prop2);
Collection barProperties=new ArrayList();
PropertyInfo prop3=new PropertyInfo();
prop3.setName("name1");
prop3.setValue("val3");
barProperties.add(prop3);
Collection otherProperties=new ArrayList();
PropertyInfo prop4=new PropertyInfo();
prop4.setName("name1");
prop4.setValue("val4");
otherProperties.add(prop4);
ConfigurationModule configModule1=createConfigurationModule("FOO",fooProperties);
ConfigurationModule configModule2=createConfigurationModule("BAR",barProperties);
ConfigurationModule configModule3=createConfigurationModule("OTHER",otherProperties);
Collection configModules=new ArrayList();
configModules.add(configModule1);
configModules.add(configModule2);
configModules.add(configModule3);
ServiceModule service=createServiceModule(info,configModules);
List properties=service.getModuleInfo().getProperties();
assertEquals(4,properties.size());
Map>> attributes=service.getModuleInfo().getConfigTypeAttributes();
assertEquals(2,attributes.size());
assertTrue(attributes.containsKey("FOO"));
assertTrue(attributes.containsKey("OTHER"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_ServicePackageFolder() throws Exception {
String servicePackageFolder="packageDir";
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
ServiceModule child=createServiceModule(info);
ServiceModule parent=createServiceModule(parentInfo);
assertEquals("packageDir",child.getModuleInfo().getServicePackageFolder());
parent.getModuleInfo().setServicePackageFolder(null);
resolveService(child,parent);
assertEquals(servicePackageFolder,child.getModuleInfo().getServicePackageFolder());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setServicePackageFolder(servicePackageFolder);
child.getModuleInfo().setServicePackageFolder(null);
resolveService(child,parent);
assertEquals(servicePackageFolder,child.getModuleInfo().getServicePackageFolder());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setServicePackageFolder("someOtherDir");
child.getModuleInfo().setServicePackageFolder(servicePackageFolder);
resolveService(child,parent);
assertEquals(servicePackageFolder,child.getModuleInfo().getServicePackageFolder());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_CustomCommands() throws Exception {
List customCommands=new ArrayList();
CustomCommandDefinition cmd1=new CustomCommandDefinition();
setPrivateField(cmd1,"name","cmd1");
setPrivateField(cmd1,"background",false);
CustomCommandDefinition cmd2=new CustomCommandDefinition();
setPrivateField(cmd2,"name","cmd2");
customCommands.add(cmd1);
customCommands.add(cmd2);
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setCustomCommands(customCommands);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(customCommands,service.getModuleInfo().getCustomCommands());
info.setCustomCommands(null);
parentInfo.setCustomCommands(customCommands);
service=resolveService(info,parentInfo);
assertEquals(customCommands,service.getModuleInfo().getCustomCommands());
List parentCustomCommands=new ArrayList();
CustomCommandDefinition cmd3=new CustomCommandDefinition();
setPrivateField(cmd3,"name","cmd1");
setPrivateField(cmd3,"background",true);
CustomCommandDefinition cmd4=new CustomCommandDefinition();
setPrivateField(cmd4,"name","cmd4");
parentCustomCommands.add(cmd3);
parentCustomCommands.add(cmd4);
info.setCustomCommands(customCommands);
parentInfo.setCustomCommands(parentCustomCommands);
service=resolveService(info,parentInfo);
Collection mergedCommands=service.getModuleInfo().getCustomCommands();
assertEquals(3,mergedCommands.size());
assertTrue(mergedCommands.contains(cmd2));
assertTrue(mergedCommands.contains(cmd3));
assertTrue(mergedCommands.contains(cmd4));
info.setCustomCommands(null);
parentInfo.setCustomCommands(null);
service=resolveService(info,parentInfo);
assertTrue(service.getModuleInfo().getCustomCommands().isEmpty());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_Configuration__properties() throws Exception {
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
Collection childFooProperties=new ArrayList();
PropertyInfo childProp1=new PropertyInfo();
childProp1.setName("childName1");
childProp1.setValue("childVal1");
childFooProperties.add(childProp1);
Collection childBarProperties=new ArrayList();
PropertyInfo childProp2=new PropertyInfo();
childProp2.setName("childName2");
childProp2.setValue("childVal2");
childBarProperties.add(childProp2);
Map attributes=new HashMap();
attributes.put(ConfigurationInfo.Supports.DO_NOT_EXTEND.getXmlAttributeName(),"true");
ConfigurationModule childConfigModule1=createConfigurationModule("FOO",childFooProperties);
ConfigurationModule childConfigModule2=createConfigurationModule("BAR",childBarProperties,attributes);
Collection childModules=new ArrayList();
childModules.add(childConfigModule1);
childModules.add(childConfigModule2);
Collection parentFooProperties=new ArrayList();
PropertyInfo parentProp1=new PropertyInfo();
parentProp1.setName("parentName1");
parentProp1.setValue("parentVal1");
parentFooProperties.add(parentProp1);
PropertyInfo parentProp12=new PropertyInfo();
parentProp12.setName("childName1");
parentProp12.setValue("parentVal1");
parentFooProperties.add(parentProp12);
Collection parentBarProperties=new ArrayList();
PropertyInfo parentProp2=new PropertyInfo();
parentProp2.setName("parentName2");
parentProp2.setValue("parentVal2");
parentBarProperties.add(parentProp2);
Collection parentOtherProperties=new ArrayList();
PropertyInfo parentProp3=new PropertyInfo();
parentProp3.setName("parentName3");
parentProp3.setValue("parentVal3");
parentOtherProperties.add(parentProp3);
ConfigurationModule parentConfigModule1=createConfigurationModule("FOO",parentFooProperties);
ConfigurationModule parentConfigModule2=createConfigurationModule("BAR",parentBarProperties);
ConfigurationModule parentConfigModule3=createConfigurationModule("OTHER",parentOtherProperties);
Collection parentModules=new ArrayList();
parentModules.add(parentConfigModule1);
parentModules.add(parentConfigModule2);
parentModules.add(parentConfigModule3);
ServiceModule child=createServiceModule(info,childModules);
ServiceModule parent=createServiceModule(parentInfo,parentModules);
resolveService(child,parent);
List mergedProperties=child.getModuleInfo().getProperties();
assertEquals(4,mergedProperties.size());
Map mergedPropertyMap=new HashMap();
for ( PropertyInfo prop : mergedProperties) {
mergedPropertyMap.put(prop.getName(),prop);
}
assertEquals("childVal1",mergedPropertyMap.get("childName1").getValue());
assertEquals("childVal2",mergedPropertyMap.get("childName2").getValue());
assertEquals("parentVal1",mergedPropertyMap.get("parentName1").getValue());
assertEquals("parentVal3",mergedPropertyMap.get("parentName3").getValue());
Map>> childAttributes=child.getModuleInfo().getConfigTypeAttributes();
Map>> parentAttributes=parent.getModuleInfo().getConfigTypeAttributes();
assertEquals(3,childAttributes.size());
assertAttributes(childAttributes.get("FOO"),Collections.emptyMap());
assertAttributes(childAttributes.get("BAR"),attributes);
assertAttributes(childAttributes.get("OTHER"),Collections.emptyMap());
assertEquals(3,parentAttributes.size());
assertAttributes(parentAttributes.get("FOO"),Collections.emptyMap());
assertAttributes(parentAttributes.get("BAR"),Collections.emptyMap());
assertAttributes(parentAttributes.get("OTHER"),Collections.emptyMap());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_Configuration__ExcludedTypes__ParentType() throws Exception {
ServiceInfo info=new ServiceInfo();
info.setExcludedConfigTypes(Collections.singleton("BAR"));
Collection fooProperties=new ArrayList();
PropertyInfo prop1=new PropertyInfo();
prop1.setName("name1");
prop1.setValue("val1");
fooProperties.add(prop1);
PropertyInfo prop2=new PropertyInfo();
prop2.setName("name2");
prop2.setValue("val2");
fooProperties.add(prop2);
ConfigurationModule childConfigModule=createConfigurationModule("FOO",fooProperties);
Collection childConfigModules=new ArrayList();
childConfigModules.add(childConfigModule);
ServiceInfo parentInfo=new ServiceInfo();
Collection barProperties=new ArrayList();
PropertyInfo prop3=new PropertyInfo();
prop3.setName("name1");
prop3.setValue("val3");
barProperties.add(prop3);
ConfigurationModule parentConfigModule=createConfigurationModule("BAR",barProperties);
Collection parentConfigModules=new ArrayList();
parentConfigModules.add(parentConfigModule);
ServiceModule service=createServiceModule(info,childConfigModules);
ServiceModule parentService=createServiceModule(parentInfo,parentConfigModules);
resolveService(service,parentService);
List properties=service.getModuleInfo().getProperties();
assertEquals(2,properties.size());
Map>> attributes=service.getModuleInfo().getConfigTypeAttributes();
assertEquals(1,attributes.size());
assertTrue(attributes.containsKey("FOO"));
Map>> parentAttributes=parentService.getModuleInfo().getConfigTypeAttributes();
assertEquals(1,parentAttributes.size());
assertTrue(parentAttributes.containsKey("BAR"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_RestartRequiredAfterChange() throws Exception {
Boolean isRestartRequired=true;
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setRestartRequiredAfterChange(isRestartRequired);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(isRestartRequired,service.getModuleInfo().isRestartRequiredAfterChange());
info.setRestartRequiredAfterChange(null);
parentInfo.setRestartRequiredAfterChange(isRestartRequired);
service=resolveService(info,parentInfo);
assertEquals(isRestartRequired,service.getModuleInfo().isRestartRequiredAfterChange());
info.setRestartRequiredAfterChange(isRestartRequired);
parentInfo.setRestartRequiredAfterChange(false);
service=resolveService(info,parentInfo);
assertEquals(isRestartRequired,service.getModuleInfo().isRestartRequiredAfterChange());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_RequiredServices() throws Exception {
List requiredServices=new ArrayList();
requiredServices.add("foo");
requiredServices.add("bar");
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setRequiredServices(requiredServices);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(requiredServices,service.getModuleInfo().getRequiredServices());
info.setRequiredServices(null);
parentInfo.setRequiredServices(requiredServices);
service=resolveService(info,parentInfo);
assertEquals(requiredServices,service.getModuleInfo().getRequiredServices());
info.setRequiredServices(requiredServices);
parentInfo.setRequiredServices(Collections.singletonList("other"));
service=resolveService(info,parentInfo);
assertEquals(requiredServices,service.getModuleInfo().getRequiredServices());
info.setRequiredServices(null);
parentInfo.setRequiredServices(null);
service=resolveService(info,parentInfo);
assertTrue(service.getModuleInfo().getRequiredServices().isEmpty());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testMergeServiceProperties() throws Exception {
ServiceInfo serviceInfo=new ServiceInfo();
ServiceInfo parentServiceInfo=new ServiceInfo();
ServicePropertyInfo p1=new ServicePropertyInfo();
p1.setName("P1");
p1.setValue("V1");
ServicePropertyInfo p2=new ServicePropertyInfo();
p2.setName("P2");
p2.setValue("V2");
ServicePropertyInfo p2Override=new ServicePropertyInfo();
p2Override.setName("P2");
p2Override.setValue("V2_OVERRIDE");
ServicePropertyInfo p3=new ServicePropertyInfo();
p3.setName("P3");
p3.setValue("V3");
List parentServicePropertyList=Lists.newArrayList(p1,p2);
parentServiceInfo.setServicePropertyList(parentServicePropertyList);
List servicePropertyList=Lists.newArrayList(p2Override,p3);
serviceInfo.setServicePropertyList(servicePropertyList);
ServiceModule serviceModule=resolveService(serviceInfo,parentServiceInfo);
List expectedPropertyList=Lists.newArrayList(p1,p2Override,p3);
Map expectedServiceProperties=ImmutableMap.builder().put("P1","V1").put("P2","V2_OVERRIDE").put("P3","V3").put(ServiceInfo.DEFAULT_SERVICE_INSTALLABLE_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MANAGED_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MONITORED_PROPERTY).build();
List actualPropertyList=serviceModule.getModuleInfo().getServicePropertyList();
assertTrue(actualPropertyList.containsAll(expectedPropertyList) && expectedPropertyList.containsAll(actualPropertyList));
assertEquals(expectedServiceProperties,serviceModule.getModuleInfo().getServiceProperties());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_MetricsFile() throws Exception {
File metricsFile=new File("testMetricsFile");
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
ServiceModule child=createServiceModule(info);
ServiceModule parent=createServiceModule(parentInfo);
assertEquals(metricsFile,child.getModuleInfo().getMetricsFile());
parent.getModuleInfo().setMetricsFile(null);
resolveService(child,parent);
assertEquals(metricsFile,child.getModuleInfo().getMetricsFile());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setMetricsFile(metricsFile);
child.getModuleInfo().setMetricsFile(null);
resolveService(child,parent);
assertEquals(metricsFile,child.getModuleInfo().getMetricsFile());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setMetricsFile(new File("someOtherDir"));
child.getModuleInfo().setMetricsFile(metricsFile);
resolveService(child,parent);
assertEquals(metricsFile,child.getModuleInfo().getMetricsFile());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_Configuration__attributes() throws Exception {
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
Collection childFooProperties=new ArrayList();
PropertyInfo childProp1=new PropertyInfo();
childProp1.setName("childName1");
childProp1.setValue("childVal1");
childFooProperties.add(childProp1);
Map childFooAttributes=new HashMap();
childFooAttributes.put(ConfigurationInfo.Supports.ADDING_FORBIDDEN.getXmlAttributeName(),"false");
ConfigurationModule childConfigModule1=createConfigurationModule("FOO",childFooProperties,childFooAttributes);
Collection childModules=new ArrayList();
childModules.add(childConfigModule1);
Collection parentFooProperties=new ArrayList();
PropertyInfo parentProp1=new PropertyInfo();
parentProp1.setName("parentName1");
parentProp1.setValue("parentVal1");
parentFooProperties.add(parentProp1);
Map parentFooAttributes=new HashMap();
parentFooAttributes.put(ConfigurationInfo.Supports.FINAL.getXmlAttributeName(),"true");
parentFooAttributes.put(ConfigurationInfo.Supports.ADDING_FORBIDDEN.getXmlAttributeName(),"true");
Collection parentBarProperties=new ArrayList();
PropertyInfo parentProp2=new PropertyInfo();
parentProp2.setName("parentName2");
parentProp2.setValue("parentVal2");
parentBarProperties.add(parentProp2);
ConfigurationModule parentConfigModule1=createConfigurationModule("FOO",parentFooProperties,parentFooAttributes);
ConfigurationModule parentConfigModule2=createConfigurationModule("BAR",parentBarProperties);
Collection parentModules=new ArrayList();
parentModules.add(parentConfigModule1);
parentModules.add(parentConfigModule2);
ServiceModule child=createServiceModule(info,childModules);
ServiceModule parent=createServiceModule(parentInfo,parentModules);
resolveService(child,parent);
Map>> childTypeAttributes=child.getModuleInfo().getConfigTypeAttributes();
Map>> parentTypeAttributes=parent.getModuleInfo().getConfigTypeAttributes();
assertTrue(childTypeAttributes.containsKey("FOO"));
Map> mergedChildFooAttributes=childTypeAttributes.get("FOO");
assertTrue(mergedChildFooAttributes.containsKey(ConfigurationInfo.Supports.KEYWORD));
assertEquals("true",mergedChildFooAttributes.get(ConfigurationInfo.Supports.KEYWORD).get(ConfigurationInfo.Supports.valueOf("FINAL").getPropertyName()));
assertEquals("false",mergedChildFooAttributes.get(ConfigurationInfo.Supports.KEYWORD).get(ConfigurationInfo.Supports.valueOf("ADDING_FORBIDDEN").getPropertyName()));
assertEquals(2,childTypeAttributes.size());
assertEquals(2,parentTypeAttributes.size());
assertAttributes(parentTypeAttributes.get("FOO"),parentFooAttributes);
assertAttributes(parentTypeAttributes.get("BAR"),Collections.emptyMap());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_DisplayName() throws Exception {
String displayName="test_display_name";
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setDisplayName(displayName);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(displayName,service.getModuleInfo().getDisplayName());
info.setDisplayName(null);
parentInfo.setDisplayName(displayName);
service=resolveService(info,parentInfo);
assertEquals(displayName,service.getModuleInfo().getDisplayName());
info.setDisplayName(displayName);
parentInfo.setDisplayName("other display name");
service=resolveService(info,parentInfo);
assertEquals(displayName,service.getModuleInfo().getDisplayName());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testMergeServicePropertiesInheritFromEmptyParent() throws Exception {
ServiceInfo serviceInfo=new ServiceInfo();
ServiceInfo parentServiceInfo=new ServiceInfo();
ServicePropertyInfo p1=new ServicePropertyInfo();
p1.setName("P1");
p1.setValue("V1");
ServicePropertyInfo p2=new ServicePropertyInfo();
p2.setName("P2");
p2.setValue("V2");
List servicePropertyList=Lists.newArrayList(p1,p2);
serviceInfo.setServicePropertyList(servicePropertyList);
ServiceModule serviceModule=resolveService(serviceInfo,parentServiceInfo);
Map serviceProperties=ImmutableMap.builder().put("P1","V1").put("P2","V2").put(ServiceInfo.DEFAULT_SERVICE_INSTALLABLE_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MANAGED_PROPERTY).put(ServiceInfo.DEFAULT_SERVICE_MONITORED_PROPERTY).build();
assertEquals(servicePropertyList,serviceModule.getModuleInfo().getServicePropertyList());
assertEquals(serviceProperties,serviceModule.getModuleInfo().getServiceProperties());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_AlertsFile() throws Exception {
File alertsFile=new File("testAlertsFile");
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
ServiceModule child=createServiceModule(info);
ServiceModule parent=createServiceModule(parentInfo);
assertEquals(alertsFile,child.getModuleInfo().getAlertsFile());
parent.getModuleInfo().setAlertsFile(null);
resolveService(child,parent);
assertEquals(alertsFile,child.getModuleInfo().getAlertsFile());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setAlertsFile(alertsFile);
child.getModuleInfo().setAlertsFile(null);
resolveService(child,parent);
assertEquals(alertsFile,child.getModuleInfo().getAlertsFile());
child=createServiceModule(info);
parent=createServiceModule(parentInfo);
parent.getModuleInfo().setAlertsFile(new File("someOtherDir"));
child.getModuleInfo().setAlertsFile(alertsFile);
resolveService(child,parent);
assertEquals(alertsFile,child.getModuleInfo().getAlertsFile());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testResolve_Version() throws Exception {
String version="1.1";
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
info.setVersion(version);
ServiceModule service=resolveService(info,parentInfo);
assertEquals(version,service.getModuleInfo().getVersion());
info.setVersion(null);
parentInfo.setVersion(version);
service=resolveService(info,parentInfo);
assertEquals(version,service.getModuleInfo().getVersion());
info.setVersion(version);
parentInfo.setVersion("1.0");
service=resolveService(info,parentInfo);
assertEquals(version,service.getModuleInfo().getVersion());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testResolve_Components() throws Exception {
ComponentInfo info1=new ComponentInfo();
info1.setName("1");
ComponentInfo info2=new ComponentInfo();
info2.setName("2");
ComponentInfo XX=new ComponentInfo();
XX.setName("XX");
ComponentInfo info3=new ComponentInfo();
info3.setName("1");
info3.setCardinality("ALL");
info3.setCategory("category");
ComponentInfo info4=new ComponentInfo();
info4.setName("4");
ComponentInfo info5=new ComponentInfo();
info5.setName("XX");
info5.setDeleted(true);
ServiceInfo info=new ServiceInfo();
ServiceInfo parentInfo=new ServiceInfo();
List childComponents=info.getComponents();
childComponents.add(info3);
childComponents.add(info4);
childComponents.add(info5);
List parentComponents=parentInfo.getComponents();
parentComponents.add(info1);
parentComponents.add(info2);
ServiceModule child=createServiceModule(info);
ServiceModule parent=createServiceModule(parentInfo);
resolveService(child,parent);
List components=child.getModuleInfo().getComponents();
assertEquals(3,components.size());
Map mergedComponents=new HashMap();
for ( ComponentInfo component : components) {
mergedComponents.put(component.getName(),component);
}
assertTrue(mergedComponents.containsKey("1"));
assertTrue(mergedComponents.containsKey("2"));
assertTrue(mergedComponents.containsKey("4"));
assertEquals("ALL",mergedComponents.get("1").getCardinality());
assertEquals("category",mergedComponents.get("1").getCategory());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testMerge_Configuration__ExcludedTypes() throws Exception {
ServiceInfo info=new ServiceInfo();
Set childExcludedConfigTypes=new HashSet();
childExcludedConfigTypes.add("FOO");
info.setExcludedConfigTypes(childExcludedConfigTypes);
Collection fooProperties=new ArrayList();
ConfigurationModule childConfigModule=createConfigurationModule("FOO",fooProperties);
Collection childConfigModules=new ArrayList();
childConfigModules.add(childConfigModule);
ServiceInfo parentInfo=new ServiceInfo();
Set parentExcludedConfigTypes=new HashSet();
childExcludedConfigTypes.add("BAR");
info.setExcludedConfigTypes(childExcludedConfigTypes);
parentInfo.setExcludedConfigTypes(parentExcludedConfigTypes);
Collection barProperties=new ArrayList();
ConfigurationModule parentConfigModule=createConfigurationModule("BAR",barProperties);
Collection parentConfigModules=new ArrayList();
parentConfigModules.add(parentConfigModule);
ServiceModule service=createServiceModule(info,childConfigModules);
ServiceModule parentService=createServiceModule(parentInfo,parentConfigModules);
resolveService(service,parentService);
assertEquals(2,service.getModuleInfo().getExcludedConfigTypes().size());
}
Class: org.apache.ambari.server.stack.StackManagerCommonServicesTest APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetStack(){
StackInfo stack=stackManager.getStack("HDP","0.1");
assertNotNull(stack);
assertEquals("HDP",stack.getName());
assertEquals("0.1",stack.getVersion());
Collection services=stack.getServices();
assertEquals(3,services.size());
Map serviceMap=new HashMap();
for ( ServiceInfo service : services) {
serviceMap.put(service.getName(),service);
}
ServiceInfo hdfsService=serviceMap.get("HDFS");
assertNotNull(hdfsService);
List components=hdfsService.getComponents();
assertEquals(6,components.size());
List properties=hdfsService.getProperties();
assertEquals(62,properties.size());
boolean hdfsPropFound=false;
boolean hbasePropFound=false;
for ( PropertyInfo p : properties) {
if (p.getName().equals("hbase.regionserver.msginterval")) {
assertEquals("hbase-site.xml",p.getFilename());
hbasePropFound=true;
}
else if (p.getName().equals("dfs.name.dir")) {
assertEquals("hdfs-site.xml",p.getFilename());
hdfsPropFound=true;
}
}
assertTrue(hbasePropFound);
assertTrue(hdfsPropFound);
ServiceInfo mrService=serviceMap.get("MAPREDUCE");
assertNotNull(mrService);
components=mrService.getComponents();
assertEquals(3,components.size());
ServiceInfo pigService=serviceMap.get("PIG");
assertNotNull(pigService);
assertEquals("PIG",pigService.getName());
assertEquals("1.0",pigService.getVersion());
assertEquals("This is comment for PIG service",pigService.getComment());
components=pigService.getComponents();
assertEquals(1,components.size());
CommandScriptDefinition commandScript=pigService.getCommandScript();
assertEquals("scripts/service_check.py",commandScript.getScript());
assertEquals(CommandScriptDefinition.Type.PYTHON,commandScript.getScriptType());
assertEquals(300,commandScript.getTimeout());
List configDependencies=pigService.getConfigDependencies();
assertEquals(1,configDependencies.size());
assertEquals("global",configDependencies.get(0));
assertEquals("global",pigService.getConfigDependenciesWithComponents().get(0));
ComponentInfo client=pigService.getClientComponent();
assertNotNull(client);
assertEquals("PIG",client.getName());
assertEquals("0+",client.getCardinality());
assertEquals("CLIENT",client.getCategory());
assertEquals("configuration",pigService.getConfigDir());
assertEquals("2.0",pigService.getSchemaVersion());
Map osInfoMap=pigService.getOsSpecifics();
assertEquals(1,osInfoMap.size());
ServiceOsSpecific osSpecific=osInfoMap.get("centos6");
assertNotNull(osSpecific);
assertEquals("centos6",osSpecific.getOsFamily());
assertNull(osSpecific.getRepo());
List packages=osSpecific.getPackages();
assertEquals(2,packages.size());
ServiceOsSpecific.Package pkg=packages.get(0);
assertEquals("pig",pkg.getName());
assertFalse(pkg.getSkipUpgrade());
ServiceOsSpecific.Package lzoPackage=packages.get(1);
assertEquals("lzo",lzoPackage.getName());
assertTrue(lzoPackage.getSkipUpgrade());
assertEquals(pigService.getParent(),"common-services/PIG/1.0");
}
InternalCallVerifier EqualityVerifier
@Test public void testGetStacksCount() throws Exception {
Collection stacks=stackManager.getStacks();
assertEquals(2,stacks.size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetServicePackageFolder(){
StackInfo stack=stackManager.getStack("HDP","0.1");
assertNotNull(stack);
assertEquals("HDP",stack.getName());
assertEquals("0.1",stack.getVersion());
ServiceInfo hdfsService1=stack.getService("HDFS");
assertNotNull(hdfsService1);
stack=stackManager.getStack("HDP","0.2");
assertNotNull(stack);
assertEquals("HDP",stack.getName());
assertEquals("0.2",stack.getVersion());
ServiceInfo hdfsService2=stack.getService("HDFS");
assertNotNull(hdfsService2);
String packageDir1=StringUtils.join(new String[]{"common-services","HDFS","1.0","package"},File.separator);
String packageDir2=StringUtils.join(new String[]{"stacks_with_common_services","HDP","0.2","services","HDFS","package"},File.separator);
assertEquals(packageDir1,hdfsService1.getServicePackageFolder());
assertEquals(packageDir2,hdfsService2.getServicePackageFolder());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetStacksByName(){
Collection stacks=stackManager.getStacks("HDP");
assertEquals(2,stacks.size());
}
Class: org.apache.ambari.server.stack.StackManagerMiscTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* This test ensures the service status check is added into the action metadata when
* the stack has no parent and is the only stack in the stack family
*/
@Test public void testGetServiceInfoFromSingleStack() throws Exception {
MetainfoDAO metaInfoDao=createNiceMock(MetainfoDAO.class);
StackDAO stackDao=createNiceMock(StackDAO.class);
ActionMetadata actionMetadata=createNiceMock(ActionMetadata.class);
OsFamily osFamily=createNiceMock(OsFamily.class);
StackEntity stackEntity=createNiceMock(StackEntity.class);
actionMetadata.addServiceCheckAction("HDFS");
expect(stackDao.find(EasyMock.anyObject(String.class),EasyMock.anyObject(String.class))).andReturn(stackEntity).atLeastOnce();
replay(metaInfoDao,stackDao,actionMetadata,osFamily);
String singleStack=ClassLoader.getSystemClassLoader().getResource("single_stack").getPath();
StackManager stackManager=new StackManager(new File(singleStack.replace(StackManager.PATH_DELIMITER,File.separator)),null,osFamily,metaInfoDao,actionMetadata,stackDao);
Collection stacks=stackManager.getStacks();
assertEquals(1,stacks.size());
assertNotNull(stacks.iterator().next().getService("HDFS"));
verify(metaInfoDao,stackDao,actionMetadata,osFamily);
}
Class: org.apache.ambari.server.stack.StackManagerTest InternalCallVerifier EqualityVerifier
@Test public void testGetsStacks() throws Exception {
Collection stacks=stackManager.getStacks();
assertEquals(19,stacks.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testClientConfigFilesInheritance() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.0.6");
ServiceInfo zkService=stack.getService("ZOOKEEPER");
List components=zkService.getComponents();
assertTrue(components.size() == 2);
ComponentInfo componentInfo=components.get(1);
List clientConfigs=componentInfo.getClientConfigFiles();
assertEquals(2,clientConfigs.size());
assertEquals("zookeeper-env",clientConfigs.get(0).getDictionaryName());
assertEquals("zookeeper-env.sh",clientConfigs.get(0).getFileName());
assertEquals("env",clientConfigs.get(0).getType());
assertEquals("zookeeper-log4j",clientConfigs.get(1).getDictionaryName());
assertEquals("log4j.properties",clientConfigs.get(1).getFileName());
assertEquals("env",clientConfigs.get(1).getType());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testStackServiceExtension(){
StackInfo stack=stackManager.getStack("OTHER","1.0");
assertNotNull(stack);
assertEquals("OTHER",stack.getName());
assertEquals("1.0",stack.getVersion());
Collection services=stack.getServices();
assertEquals(3,services.size());
assertEquals(6,stack.getService("HDFS").getComponents().size());
ServiceInfo sqoopService=stack.getService("SQOOP2");
assertNotNull(sqoopService);
assertEquals("Extended SQOOP",sqoopService.getComment());
assertEquals("Extended Version",sqoopService.getVersion());
assertNull(sqoopService.getServicePackageFolder());
Collection components=sqoopService.getComponents();
assertEquals(1,components.size());
ComponentInfo component=components.iterator().next();
assertEquals("SQOOP",component.getName());
StackInfo baseStack=stackManager.getStack("HDP","2.1.1");
ServiceInfo baseSqoopService=baseStack.getService("SQOOP");
assertEquals(baseSqoopService.isDeleted(),sqoopService.isDeleted());
assertEquals(baseSqoopService.getAlertsFile(),sqoopService.getAlertsFile());
assertEquals(baseSqoopService.getClientComponent(),sqoopService.getClientComponent());
assertEquals(baseSqoopService.getCommandScript(),sqoopService.getCommandScript());
assertEquals(baseSqoopService.getConfigDependencies(),sqoopService.getConfigDependencies());
assertEquals(baseSqoopService.getConfigDir(),sqoopService.getConfigDir());
assertEquals(baseSqoopService.getConfigDependenciesWithComponents(),sqoopService.getConfigDependenciesWithComponents());
assertEquals(baseSqoopService.getConfigTypeAttributes(),sqoopService.getConfigTypeAttributes());
assertEquals(baseSqoopService.getCustomCommands(),sqoopService.getCustomCommands());
assertEquals(baseSqoopService.getExcludedConfigTypes(),sqoopService.getExcludedConfigTypes());
assertEquals(baseSqoopService.getProperties(),sqoopService.getProperties());
assertEquals(baseSqoopService.getMetrics(),sqoopService.getMetrics());
assertNull(baseSqoopService.getMetricsFile());
assertNull(sqoopService.getMetricsFile());
assertEquals(baseSqoopService.getOsSpecifics(),sqoopService.getOsSpecifics());
assertEquals(baseSqoopService.getRequiredServices(),sqoopService.getRequiredServices());
assertEquals(baseSqoopService.getSchemaVersion(),sqoopService.getSchemaVersion());
ServiceInfo stormService=stack.getService("STORM");
assertNotNull(stormService);
assertEquals("STORM",stormService.getName());
ServiceInfo baseStormService=baseStack.getService("STORM");
assertEquals("Apache Hadoop Stream processing framework (Extended)",stormService.getComment());
assertEquals("New version",stormService.getVersion());
String packageDir=StringUtils.join(new String[]{"stacks","OTHER","1.0","services","STORM","package"},File.separator);
assertEquals(packageDir,stormService.getServicePackageFolder());
List stormServiceComponents=stormService.getComponents();
List baseStormServiceComponents=baseStormService.getComponents();
assertEquals(new HashSet(stormServiceComponents),new HashSet(baseStormServiceComponents));
assertEquals(baseStormService.isDeleted(),stormService.isDeleted());
assertEquals(baseStormService.getAlertsFile(),stormService.getAlertsFile());
assertEquals(baseStormService.getClientComponent(),stormService.getClientComponent());
assertEquals(baseStormService.getCommandScript(),stormService.getCommandScript());
assertEquals(baseStormService.getConfigDependencies(),stormService.getConfigDependencies());
assertEquals(baseStormService.getConfigDir(),stormService.getConfigDir());
assertEquals(baseStormService.getConfigDependenciesWithComponents(),stormService.getConfigDependenciesWithComponents());
assertEquals(baseStormService.getConfigTypeAttributes(),stormService.getConfigTypeAttributes());
assertEquals(baseStormService.getCustomCommands(),stormService.getCustomCommands());
assertEquals(baseStormService.getExcludedConfigTypes(),stormService.getExcludedConfigTypes());
assertEquals(baseStormService.getProperties(),stormService.getProperties());
assertEquals(baseStormService.getMetrics(),stormService.getMetrics());
assertNotNull(baseStormService.getMetricsFile());
assertNotNull(stormService.getMetricsFile());
assertFalse(baseStormService.getMetricsFile().equals(stormService.getMetricsFile()));
assertEquals(baseStormService.getOsSpecifics(),stormService.getOsSpecifics());
assertEquals(baseStormService.getRequiredServices(),stormService.getRequiredServices());
assertEquals(baseStormService.getSchemaVersion(),stormService.getSchemaVersion());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testMergeRoleCommandOrder() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.1.1");
Map roleCommandOrder=stack.getRoleCommandOrder().getContent();
assertTrue(roleCommandOrder.containsKey("optional_glusterfs"));
assertTrue(roleCommandOrder.containsKey("general_deps"));
assertTrue(roleCommandOrder.containsKey("optional_no_glusterfs"));
assertTrue(roleCommandOrder.containsKey("namenode_optional_ha"));
assertTrue(roleCommandOrder.containsKey("resourcemanager_optional_ha"));
Map generalDeps=(Map)roleCommandOrder.get("general_deps");
assertTrue(generalDeps.containsKey("HBASE_MASTER-START"));
assertTrue(generalDeps.containsKey("HBASE_REGIONSERVER-START"));
Map optionalNoGlusterfs=(Map)roleCommandOrder.get("optional_no_glusterfs");
assertTrue(optionalNoGlusterfs.containsKey("SECONDARY_NAMENODE-START"));
ArrayList hbaseMasterStartValues=(ArrayList)generalDeps.get("HBASE_MASTER-START");
assertTrue(hbaseMasterStartValues.get(0).equals("ZOOKEEPER_SERVER-START"));
assertTrue(optionalNoGlusterfs.containsKey("NAMENODE-STOP"));
ArrayList nameNodeStopValues=(ArrayList)optionalNoGlusterfs.get("NAMENODE-STOP");
assertTrue(nameNodeStopValues.contains("JOBTRACKER-STOP"));
assertTrue(nameNodeStopValues.contains("CUSTOM_MASTER-STOP"));
assertTrue(generalDeps.containsKey("CUSTOM_MASTER-START"));
ArrayList customMasterStartValues=(ArrayList)generalDeps.get("CUSTOM_MASTER-START");
assertTrue(customMasterStartValues.contains("ZOOKEEPER_SERVER-START"));
assertTrue(customMasterStartValues.contains("NAMENODE-START"));
}
InternalCallVerifier NullVerifier
@Test public void testInheritanceAfterComponentDeletion(){
StackInfo stack=stackManager.getStack("HDP","2.0.6");
ServiceInfo yarnService=stack.getService("HBASE");
assertNull(yarnService.getComponentByName("HBASE_CLIENT"));
stack=stackManager.getStack("HDP","2.0.6.1");
yarnService=stack.getService("HBASE");
assertNull(yarnService.getComponentByName("HBASE_CLIENT"));
stack=stackManager.getStack("HDP","2.0.8");
yarnService=stack.getService("HBASE");
assertNotNull(yarnService.getComponentByName("HBASE_CLIENT"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHDFSServiceContainsMetricsFile() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.0.6");
ServiceInfo hdfsService=stack.getService("HDFS");
assertEquals("HDFS",hdfsService.getName());
assertNotNull(hdfsService.getMetricsFile());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testServicesWithRangerPluginRoleCommandOrder() throws AmbariException {
String stackRoot=ClassLoader.getSystemClassLoader().getResource("stacks").getPath().replace("test-classes","classes");
String commonServices=ClassLoader.getSystemClassLoader().getResource("common-services").getPath().replace("test-classes","classes");
MetainfoDAO metaInfoDao=createNiceMock(MetainfoDAO.class);
StackDAO stackDao=createNiceMock(StackDAO.class);
ActionMetadata actionMetadata=createNiceMock(ActionMetadata.class);
Configuration config=createNiceMock(Configuration.class);
expect(config.getSharedResourcesDirPath()).andReturn(ClassLoader.getSystemClassLoader().getResource("").getPath()).anyTimes();
replay(config,metaInfoDao,stackDao,actionMetadata);
OsFamily osFamily=new OsFamily(config);
StackManager stackManager=new StackManager(new File(stackRoot),new File(commonServices),osFamily,metaInfoDao,actionMetadata,stackDao);
String rangerUserSyncRoleCommand=Role.RANGER_USERSYNC + "-" + RoleCommand.START;
String rangerAdminRoleCommand=Role.RANGER_ADMIN + "-" + RoleCommand.START;
String zookeeperServerRoleCommand=Role.ZOOKEEPER_SERVER + "-" + RoleCommand.START;
String nodeManagerRoleCommand=Role.NODEMANAGER + "-" + RoleCommand.START;
String mySqlServerRoleCommand=Role.MYSQL_SERVER + "-" + RoleCommand.START;
StackInfo hdp=stackManager.getStack("HDP","2.3");
Map rco=hdp.getRoleCommandOrder().getContent();
Map generalDeps=(Map)rco.get("general_deps");
Map optionalNoGlusterfs=(Map)rco.get("optional_no_glusterfs");
String nameNodeRoleCommand=Role.NAMENODE + "-" + RoleCommand.START;
ArrayList nameNodeBlockers=(ArrayList)optionalNoGlusterfs.get(nameNodeRoleCommand);
assertTrue(nameNodeRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,nameNodeBlockers.contains(rangerUserSyncRoleCommand));
String dataNodeRoleCommand=Role.DATANODE + "-" + RoleCommand.START;
ArrayList dataNodeBlockers=(ArrayList)optionalNoGlusterfs.get(dataNodeRoleCommand);
assertTrue(dataNodeRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,dataNodeBlockers.contains(rangerUserSyncRoleCommand));
String resourceManagerCommandRoleCommand=Role.RESOURCEMANAGER + "-" + RoleCommand.START;
ArrayList resourceManagerBlockers=(ArrayList)generalDeps.get(resourceManagerCommandRoleCommand);
assertTrue(resourceManagerCommandRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,resourceManagerBlockers.contains(rangerUserSyncRoleCommand));
String hbaseRoleCommand=Role.HBASE_MASTER + "-" + RoleCommand.START;
ArrayList hbaseBlockers=(ArrayList)generalDeps.get(hbaseRoleCommand);
assertTrue(hbaseRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,hbaseBlockers.contains(rangerUserSyncRoleCommand));
assertTrue(hbaseRoleCommand + " should be dependent of " + zookeeperServerRoleCommand,hbaseBlockers.contains(zookeeperServerRoleCommand));
String knoxRoleCommand=Role.KNOX_GATEWAY + "-" + RoleCommand.START;
ArrayList knoxBlockers=(ArrayList)generalDeps.get(knoxRoleCommand);
assertTrue(knoxRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,knoxBlockers.contains(rangerUserSyncRoleCommand));
String kafkaRoleCommand=Role.KAFKA_BROKER + "-" + RoleCommand.START;
ArrayList kafkaBlockers=(ArrayList)generalDeps.get(kafkaRoleCommand);
assertTrue(Role.KAFKA_BROKER + "-" + RoleCommand.START+ " should be dependent of "+ rangerUserSyncRoleCommand,kafkaBlockers.contains(rangerUserSyncRoleCommand));
String hiveRoleCommand=Role.HIVE_SERVER + "-" + RoleCommand.START;
ArrayList hiveBlockers=(ArrayList)generalDeps.get(hiveRoleCommand);
assertTrue(hiveRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,hiveBlockers.contains(rangerUserSyncRoleCommand));
assertTrue(hiveRoleCommand + " should be dependent of " + nodeManagerRoleCommand,hiveBlockers.contains(nodeManagerRoleCommand));
assertTrue(hiveRoleCommand + " should be dependent of " + mySqlServerRoleCommand,hiveBlockers.contains(mySqlServerRoleCommand));
String stormRoleCommand=Role.NIMBUS + "-" + RoleCommand.START;
ArrayList stormBlockers=(ArrayList)generalDeps.get(stormRoleCommand);
assertTrue(stormRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,stormBlockers.contains(rangerUserSyncRoleCommand));
assertTrue(stormRoleCommand + " should be dependent of " + zookeeperServerRoleCommand,stormBlockers.contains(zookeeperServerRoleCommand));
String kmsRoleCommand=Role.RANGER_KMS_SERVER + "-" + RoleCommand.START;
ArrayList rangerKmsBlockers=(ArrayList)generalDeps.get(kmsRoleCommand);
assertTrue(kmsRoleCommand + " should be dependent of " + rangerAdminRoleCommand,rangerKmsBlockers.contains(rangerAdminRoleCommand));
ArrayList rangerUserSyncBlockers=(ArrayList)generalDeps.get(rangerUserSyncRoleCommand);
assertTrue(rangerUserSyncRoleCommand + " should be dependent of " + rangerAdminRoleCommand,rangerUserSyncBlockers.contains(rangerAdminRoleCommand));
assertTrue(rangerUserSyncRoleCommand + " should be dependent of " + kmsRoleCommand,rangerUserSyncBlockers.contains(kmsRoleCommand));
ArrayList zookeeperBlockers=(ArrayList)generalDeps.get(zookeeperServerRoleCommand);
assertTrue(zookeeperServerRoleCommand + " should be dependent of " + rangerUserSyncRoleCommand,zookeeperBlockers.contains(rangerUserSyncRoleCommand));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPopulateConfigTypes() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.0.7");
ServiceInfo hdfsService=stack.getService("HDFS");
Map>> configTypes=hdfsService.getConfigTypeAttributes();
assertEquals(4,configTypes.size());
Map> configType=configTypes.get("global");
assertEquals(1,configType.size());
Map supportsMap=configType.get("supports");
assertEquals(3,supportsMap.size());
assertEquals("true",supportsMap.get("final"));
assertEquals("false",supportsMap.get("adding_forbidden"));
assertEquals("false",supportsMap.get("do_not_extend"));
configType=configTypes.get("hdfs-site");
assertEquals(1,configType.size());
supportsMap=configType.get("supports");
assertEquals(3,supportsMap.size());
assertEquals("false",supportsMap.get("final"));
assertEquals("false",supportsMap.get("adding_forbidden"));
assertEquals("false",supportsMap.get("do_not_extend"));
configType=configTypes.get("core-site");
assertEquals(1,configType.size());
supportsMap=configType.get("supports");
assertEquals(3,supportsMap.size());
assertEquals("false",supportsMap.get("final"));
assertEquals("false",supportsMap.get("adding_forbidden"));
assertEquals("false",supportsMap.get("do_not_extend"));
configType=configTypes.get("hadoop-policy");
assertEquals(1,configType.size());
supportsMap=configType.get("supports");
assertEquals(3,supportsMap.size());
assertEquals("false",supportsMap.get("final"));
assertEquals("false",supportsMap.get("adding_forbidden"));
assertEquals("false",supportsMap.get("do_not_extend"));
ServiceInfo yarnService=stack.getService("YARN");
configTypes=yarnService.getConfigTypeAttributes();
assertEquals(4,configTypes.size());
assertTrue(configTypes.containsKey("yarn-site"));
assertTrue(configTypes.containsKey("core-site"));
assertTrue(configTypes.containsKey("global"));
assertTrue(configTypes.containsKey("capacity-scheduler"));
configType=configTypes.get("yarn-site");
supportsMap=configType.get("supports");
assertEquals(3,supportsMap.size());
assertEquals("false",supportsMap.get("final"));
assertEquals("true",supportsMap.get("adding_forbidden"));
assertEquals("true",supportsMap.get("do_not_extend"));
ServiceInfo mrService=stack.getService("MAPREDUCE2");
configTypes=mrService.getConfigTypeAttributes();
assertEquals(3,configTypes.size());
assertTrue(configTypes.containsKey("mapred-site"));
assertTrue(configTypes.containsKey("core-site"));
assertTrue(configTypes.containsKey("mapred-queue-acls"));
}
InternalCallVerifier EqualityVerifier
@Test public void testInheritKerberosDescriptor() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.1.1");
String stacksFolder=ClassLoader.getSystemClassLoader().getResource("stacks").getPath();
assertEquals(new File(stacksFolder,"HDP/2.0.8/kerberos.json").getAbsolutePath(),stack.getKerberosDescriptorFileLocation());
}
InternalCallVerifier NullVerifier
@Test public void testComponentDeletion(){
StackInfo stack=stackManager.getStack("HDP","2.0.6");
ServiceInfo yarnService=stack.getService("YARN");
assertNull(yarnService.getComponentByName("YARN_CLIENT"));
stack=stackManager.getStack("HDP","2.0.6.1");
yarnService=stack.getService("YARN");
assertNull(yarnService.getComponentByName("YARN_CLIENT"));
stack=stackManager.getStack("HDP","2.0.7");
yarnService=stack.getService("YARN");
assertNotNull(yarnService.getComponentByName("YARN_CLIENT"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetStacksByName(){
Collection stacks=stackManager.getStacks("HDP");
assertEquals(15,stacks.size());
stacks=stackManager.getStacks("OTHER");
assertEquals(2,stacks.size());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMonitoringServicePropertyInheritance() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.0.8");
Collection allServices=stack.getServices();
assertEquals(13,allServices.size());
boolean monitoringServiceFound=false;
for ( ServiceInfo serviceInfo : allServices) {
if (serviceInfo.getName().equals("FAKENAGIOS")) {
monitoringServiceFound=true;
assertTrue(serviceInfo.isMonitoringService());
}
else {
assertNull(serviceInfo.isMonitoringService());
}
}
assertTrue(monitoringServiceFound);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetStack(){
StackInfo stack=stackManager.getStack("HDP","0.1");
assertNotNull(stack);
assertEquals("HDP",stack.getName());
assertEquals("0.1",stack.getVersion());
Collection services=stack.getServices();
assertEquals(3,services.size());
Map serviceMap=new HashMap();
for ( ServiceInfo service : services) {
serviceMap.put(service.getName(),service);
}
ServiceInfo hdfsService=serviceMap.get("HDFS");
assertNotNull(hdfsService);
List components=hdfsService.getComponents();
assertEquals(6,components.size());
List properties=hdfsService.getProperties();
assertEquals(62,properties.size());
boolean hdfsPropFound=false;
boolean hbasePropFound=false;
for ( PropertyInfo p : properties) {
if (p.getName().equals("hbase.regionserver.msginterval")) {
assertEquals("hbase-site.xml",p.getFilename());
hbasePropFound=true;
}
else if (p.getName().equals("dfs.name.dir")) {
assertEquals("hdfs-site.xml",p.getFilename());
hdfsPropFound=true;
}
}
assertTrue(hbasePropFound);
assertTrue(hdfsPropFound);
ServiceInfo mrService=serviceMap.get("MAPREDUCE");
assertNotNull(mrService);
components=mrService.getComponents();
assertEquals(3,components.size());
ServiceInfo pigService=serviceMap.get("PIG");
assertNotNull(pigService);
assertEquals("PIG",pigService.getName());
assertEquals("1.0",pigService.getVersion());
assertEquals("This is comment for PIG service",pigService.getComment());
components=pigService.getComponents();
assertEquals(1,components.size());
CommandScriptDefinition commandScript=pigService.getCommandScript();
assertEquals("scripts/service_check.py",commandScript.getScript());
assertEquals(CommandScriptDefinition.Type.PYTHON,commandScript.getScriptType());
assertEquals(300,commandScript.getTimeout());
List configDependencies=pigService.getConfigDependencies();
assertEquals(1,configDependencies.size());
assertEquals("global",configDependencies.get(0));
assertEquals("global",pigService.getConfigDependenciesWithComponents().get(0));
ComponentInfo client=pigService.getClientComponent();
assertNotNull(client);
assertEquals("PIG",client.getName());
assertEquals("0+",client.getCardinality());
assertEquals("CLIENT",client.getCategory());
assertEquals("configuration",pigService.getConfigDir());
assertEquals("2.0",pigService.getSchemaVersion());
Map osInfoMap=pigService.getOsSpecifics();
assertEquals(1,osInfoMap.size());
ServiceOsSpecific osSpecific=osInfoMap.get("centos6");
assertNotNull(osSpecific);
assertEquals("centos6",osSpecific.getOsFamily());
assertNull(osSpecific.getRepo());
List packages=osSpecific.getPackages();
assertEquals(1,packages.size());
ServiceOsSpecific.Package pkg=packages.get(0);
assertEquals("pig",pkg.getName());
assertNull(pigService.getParent());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetStackServiceInheritance(){
StackInfo baseStack=stackManager.getStack("OTHER","1.0");
StackInfo stack=stackManager.getStack("OTHER","2.0");
assertEquals(4,stack.getServices().size());
ServiceInfo service=stack.getService("SQOOP2");
ServiceInfo baseSqoopService=baseStack.getService("SQOOP2");
assertEquals("SQOOP2",service.getName());
assertEquals("Inherited from parent",service.getComment());
assertEquals("Extended from parent version",service.getVersion());
assertNull(service.getServicePackageFolder());
List serviceComponents=service.getComponents();
List baseStormServiceCompoents=baseSqoopService.getComponents();
assertEquals(serviceComponents,baseStormServiceCompoents);
assertEquals(baseSqoopService.isDeleted(),service.isDeleted());
assertEquals(baseSqoopService.getAlertsFile(),service.getAlertsFile());
assertEquals(baseSqoopService.getClientComponent(),service.getClientComponent());
assertEquals(baseSqoopService.getCommandScript(),service.getCommandScript());
assertEquals(baseSqoopService.getConfigDependencies(),service.getConfigDependencies());
assertEquals(baseSqoopService.getConfigDir(),service.getConfigDir());
assertEquals(baseSqoopService.getConfigDependenciesWithComponents(),service.getConfigDependenciesWithComponents());
assertEquals(baseSqoopService.getConfigTypeAttributes(),service.getConfigTypeAttributes());
assertEquals(baseSqoopService.getCustomCommands(),service.getCustomCommands());
assertEquals(baseSqoopService.getExcludedConfigTypes(),service.getExcludedConfigTypes());
assertEquals(baseSqoopService.getProperties(),service.getProperties());
assertEquals(baseSqoopService.getMetrics(),service.getMetrics());
assertNull(baseSqoopService.getMetricsFile());
assertNull(service.getMetricsFile());
assertEquals(baseSqoopService.getOsSpecifics(),service.getOsSpecifics());
assertEquals(baseSqoopService.getRequiredServices(),service.getRequiredServices());
assertEquals(baseSqoopService.getSchemaVersion(),service.getSchemaVersion());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testStackVersionInheritance(){
StackInfo stack=stackManager.getStack("HDP","2.1.1");
assertNotNull(stack);
assertEquals("HDP",stack.getName());
assertEquals("2.1.1",stack.getVersion());
Collection services=stack.getServices();
assertEquals(16,services.size());
HashSet expectedServices=new HashSet();
expectedServices.add("GANGLIA");
expectedServices.add("HBASE");
expectedServices.add("HCATALOG");
expectedServices.add("HDFS");
expectedServices.add("HIVE");
expectedServices.add("MAPREDUCE2");
expectedServices.add("OOZIE");
expectedServices.add("PIG");
expectedServices.add("SQOOP");
expectedServices.add("YARN");
expectedServices.add("ZOOKEEPER");
expectedServices.add("STORM");
expectedServices.add("FLUME");
expectedServices.add("FAKENAGIOS");
expectedServices.add("TEZ");
expectedServices.add("AMBARI_METRICS");
ServiceInfo pigService=null;
for ( ServiceInfo service : services) {
if (service.getName().equals("PIG")) {
pigService=service;
}
assertTrue(expectedServices.remove(service.getName()));
}
assertTrue(expectedServices.isEmpty());
assertNotNull(pigService);
assertEquals("0.12.1.2.1.1",pigService.getVersion());
assertEquals("Scripting platform for analyzing large datasets (Extended)",pigService.getComment());
ServiceInfo basePigService=stackManager.getStack("HDP","2.0.5").getService("PIG");
assertEquals("0.11.1.2.0.5.0",basePigService.getVersion());
assertEquals(1,basePigService.getComponents().size());
assertEquals(2,pigService.getComponents().size());
assertEquals(0,basePigService.getProperties().size());
assertEquals(1,pigService.getProperties().size());
assertEquals("content",pigService.getProperties().get(0).getName());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConfigDependenciesInheritance() throws Exception {
StackInfo stack=stackManager.getStack("HDP","2.0.6");
ServiceInfo hdfsService=stack.getService("HDFS");
assertEquals(5,hdfsService.getConfigDependencies().size());
assertEquals(4,hdfsService.getConfigTypeAttributes().size());
assertTrue(hdfsService.getConfigDependencies().contains("core-site"));
assertTrue(hdfsService.getConfigDependencies().contains("global"));
assertTrue(hdfsService.getConfigDependencies().contains("hdfs-site"));
assertTrue(hdfsService.getConfigDependencies().contains("hdfs-log4j"));
assertTrue(hdfsService.getConfigDependencies().contains("hadoop-policy"));
assertTrue(Boolean.valueOf(hdfsService.getConfigTypeAttributes().get("core-site").get("supports").get("final")));
assertFalse(Boolean.valueOf(hdfsService.getConfigTypeAttributes().get("global").get("supports").get("final")));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHCFSServiceType(){
StackInfo stack=stackManager.getStack("HDP","2.2.0.ECS");
ServiceInfo service=stack.getService("ECS");
assertEquals(service.getServiceType(),"HCFS");
service=stack.getService("HDFS");
assertNull(service);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testServiceDeletion(){
StackInfo stack=stackManager.getStack("HDP","2.0.6");
Collection allServices=stack.getServices();
assertEquals(11,allServices.size());
HashSet expectedServices=new HashSet();
expectedServices.add("GANGLIA");
expectedServices.add("HBASE");
expectedServices.add("HCATALOG");
expectedServices.add("HDFS");
expectedServices.add("HIVE");
expectedServices.add("MAPREDUCE2");
expectedServices.add("OOZIE");
expectedServices.add("PIG");
expectedServices.add("ZOOKEEPER");
expectedServices.add("FLUME");
expectedServices.add("YARN");
for ( ServiceInfo service : allServices) {
assertTrue(expectedServices.remove(service.getName()));
}
assertTrue(expectedServices.isEmpty());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testExcludedConfigTypes(){
StackInfo stack=stackManager.getStack("HDP","2.0.8");
ServiceInfo service=stack.getService("HBASE");
assertFalse(service.hasConfigType("global"));
Map>> configTypes=service.getConfigTypeAttributes();
assertEquals(2,configTypes.size());
assertTrue(configTypes.containsKey("hbase-site"));
assertTrue(configTypes.containsKey("hbase-policy"));
stack=stackManager.getStack("HDP","2.1.1");
service=stack.getService("HBASE");
assertFalse(service.hasConfigType("global"));
configTypes=service.getConfigTypeAttributes();
assertEquals(2,configTypes.size());
assertTrue(configTypes.containsKey("hbase-site"));
assertTrue(configTypes.containsKey("hbase-policy"));
assertFalse(configTypes.containsKey("global"));
stack=stackManager.getStack("OTHER","2.0");
service=stack.getService("HBASE");
assertFalse(service.hasConfigType("hbase-policy"));
assertFalse(service.hasConfigType("global"));
configTypes=service.getConfigTypeAttributes();
assertEquals(1,configTypes.size());
assertTrue(configTypes.containsKey("hbase-site"));
}
Class: org.apache.ambari.server.stack.ThemeModuleTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testResolve() throws Exception {
File parentThemeFile=new File(this.getClass().getClassLoader().getResource("parent-theme.json").getFile());
File childThemeFile=new File(this.getClass().getClassLoader().getResource("child-theme.json").getFile());
ThemeModule parentModule=new ThemeModule(parentThemeFile);
ThemeModule childModule=new ThemeModule(childThemeFile);
childModule.resolve(parentModule,null,null);
Theme childTheme=childModule.getModuleInfo().getThemeMap().get(ThemeModule.THEME_KEY);
Theme parentTheme=parentModule.getModuleInfo().getThemeMap().get(ThemeModule.THEME_KEY);
assertNotNull(childTheme.getThemeConfiguration().getLayouts());
assertEquals(10,parentTheme.getThemeConfiguration().getPlacement().getConfigs().size());
assertEquals(12,childTheme.getThemeConfiguration().getPlacement().getConfigs().size());
assertEquals(10,parentTheme.getThemeConfiguration().getWidgets().size());
assertEquals(12,childTheme.getThemeConfiguration().getWidgets().size());
}
Class: org.apache.ambari.server.stageplanner.TestStagePlanner APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSingleStagePlan() throws AmbariException {
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=mock(ClusterImpl.class);
when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.0.6"));
rco.initialize(cluster);
RoleGraph rg=roleGraphFactory.createNew(rco);
String hostname="dummy";
Stage stage=StageUtils.getATestStage(1,1,hostname,"","");
rg.build(stage);
List outStages=rg.getStages();
for ( Stage s : outStages) {
System.out.println(s.toString());
}
assertEquals(1,outStages.size());
assertEquals(stage.getExecutionCommands(hostname),outStages.get(0).getExecutionCommands(hostname));
}
InternalCallVerifier EqualityVerifier
@Test public void testManyStages(){
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=mock(ClusterImpl.class);
when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.0.6"));
rco.initialize(cluster);
RoleGraph rg=roleGraphFactory.createNew(rco);
long now=System.currentTimeMillis();
Stage stage=StageUtils.getATestStage(1,1,"host1","","");
stage.addHostRoleExecutionCommand("host11",Role.SECONDARY_NAMENODE,RoleCommand.START,new ServiceComponentHostStartEvent("SECONDARY_NAMENODE","host11",now),"cluster1","HDFS",false,false);
stage.addHostRoleExecutionCommand("host2",Role.HBASE_MASTER,RoleCommand.START,new ServiceComponentHostStartEvent("HBASE_MASTER","host2",now),"cluster1","HBASE",false,false);
stage.addHostRoleExecutionCommand("host3",Role.ZOOKEEPER_SERVER,RoleCommand.START,new ServiceComponentHostStartEvent("ZOOKEEPER_SERVER","host3",now),"cluster1","ZOOKEEPER",false,false);
stage.addHostRoleExecutionCommand("host4",Role.DATANODE,RoleCommand.START,new ServiceComponentHostStartEvent("DATANODE","host4",now),"cluster1","HDFS",false,false);
stage.addHostRoleExecutionCommand("host4",Role.HBASE_REGIONSERVER,RoleCommand.START,new ServiceComponentHostStartEvent("HBASE_REGIONSERVER","host4",now),"cluster1","HBASE",false,false);
stage.addHostRoleExecutionCommand("host4",Role.TASKTRACKER,RoleCommand.START,new ServiceComponentHostStartEvent("TASKTRACKER","host4",now),"cluster1","MAPREDUCE",false,false);
stage.addHostRoleExecutionCommand("host5",Role.JOBTRACKER,RoleCommand.START,new ServiceComponentHostStartEvent("JOBTRACKER","host5",now),"cluster1","MAPREDUCE",false,false);
stage.addHostRoleExecutionCommand("host6",Role.OOZIE_SERVER,RoleCommand.START,new ServiceComponentHostStartEvent("OOZIE_SERVER","host6",now),"cluster1","OOZIE",false,false);
stage.addHostRoleExecutionCommand("host7",Role.WEBHCAT_SERVER,RoleCommand.START,new ServiceComponentHostStartEvent("WEBHCAT_SERVER","host7",now),"cluster1","WEBHCAT",false,false);
stage.addHostRoleExecutionCommand("host4",Role.GANGLIA_MONITOR,RoleCommand.START,new ServiceComponentHostStartEvent("GANGLIA_MONITOR","host4",now),"cluster1","GANGLIA",false,false);
stage.addHostRoleExecutionCommand("host9",Role.GANGLIA_SERVER,RoleCommand.START,new ServiceComponentHostStartEvent("GANGLIA_SERVER","host9",now),"cluster1","GANGLIA",false,false);
System.out.println(stage.toString());
rg.build(stage);
System.out.println(rg.stringifyGraph());
List outStages=rg.getStages();
for ( Stage s : outStages) {
System.out.println(s.toString());
}
assertEquals(4,outStages.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testMultiStagePlan(){
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=mock(ClusterImpl.class);
when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.0.6"));
rco.initialize(cluster);
RoleGraph rg=roleGraphFactory.createNew(rco);
long now=System.currentTimeMillis();
Stage stage=StageUtils.getATestStage(1,1,"host1","","");
stage.addHostRoleExecutionCommand("host2",Role.HBASE_MASTER,RoleCommand.START,new ServiceComponentHostStartEvent("HBASE_MASTER","host2",now),"cluster1","HBASE",false,false);
stage.addHostRoleExecutionCommand("host3",Role.ZOOKEEPER_SERVER,RoleCommand.START,new ServiceComponentHostStartEvent("ZOOKEEPER_SERVER","host3",now),"cluster1","ZOOKEEPER",false,false);
System.out.println(stage.toString());
rg.build(stage);
System.out.println(rg.stringifyGraph());
List outStages=rg.getStages();
for ( Stage s : outStages) {
System.out.println(s.toString());
}
assertEquals(3,outStages.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testRestartStagePlan(){
RoleCommandOrder rco=injector.getInstance(RoleCommandOrder.class);
ClusterImpl cluster=mock(ClusterImpl.class);
when(cluster.getCurrentStackVersion()).thenReturn(new StackId("HDP-2.0.6"));
rco.initialize(cluster);
RoleGraph rg=roleGraphFactory.createNew(rco);
long now=System.currentTimeMillis();
Stage stage=stageFactory.createNew(1,"/tmp","cluster1",1L,"execution command wrapper test","clusterHostInfo","commandParamsStage","hostParamsStage");
stage.setStageId(1);
stage.addServerActionCommand("RESTART",null,Role.HIVE_METASTORE,RoleCommand.CUSTOM_COMMAND,"cluster1",new ServiceComponentHostServerActionEvent("host2",System.currentTimeMillis()),null,"command detail",null,null,false,false);
stage.addServerActionCommand("RESTART",null,Role.MYSQL_SERVER,RoleCommand.CUSTOM_COMMAND,"cluster1",new ServiceComponentHostServerActionEvent("host2",System.currentTimeMillis()),null,"command detail",null,null,false,false);
System.out.println(stage.toString());
rg.build(stage);
System.out.println(rg.stringifyGraph());
List outStages=rg.getStages();
for ( Stage s : outStages) {
System.out.println(s.toString());
}
assertEquals(2,outStages.size());
}
Class: org.apache.ambari.server.state.CheckHelperTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPreUpgradeCheckClusterMissing() throws Exception {
final Clusters clusters=Mockito.mock(Clusters.class);
Mockito.when(clusters.getCluster(Mockito.anyString())).thenAnswer(new Answer(){
@Override public Cluster answer( InvocationOnMock invocation) throws Throwable {
final String clusterName=invocation.getArguments()[0].toString();
if (clusterName.equals("existing")) {
return Mockito.mock(Cluster.class);
}
else {
throw new ClusterNotFoundException(clusterName);
}
}
}
);
final OsFamily osFamily=Mockito.mock(OsFamily.class);
final Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
bind(Clusters.class).toInstance(clusters);
bind(ClusterVersionDAO.class).toProvider(Providers.of(null));
bind(HostVersionDAO.class).toProvider(Providers.of(null));
bind(UpgradeDAO.class).toProvider(Providers.of(null));
bind(RepositoryVersionDAO.class).toProvider(Providers.of(null));
bind(RepositoryVersionHelper.class).toProvider(Providers.of(null));
bind(AmbariMetaInfo.class).toProvider(Providers.of(null));
bind(ServicesUpCheck.class).toInstance(new ServicesUpCheck());
bind(OsFamily.class).toInstance(osFamily);
}
}
);
final CheckHelper helper=injector.getInstance(CheckHelper.class);
List updateChecksRegistry=new ArrayList();
updateChecksRegistry.add(injector.getInstance(ServicesUpCheck.class));
List upgradeChecks=helper.performChecks(new PrereqCheckRequest("existing"),updateChecksRegistry);
Assert.assertEquals(PrereqCheckStatus.PASS,upgradeChecks.get(0).getStatus());
upgradeChecks=helper.performChecks(new PrereqCheckRequest("non-existing"),updateChecksRegistry);
Assert.assertEquals(PrereqCheckStatus.FAIL,upgradeChecks.get(0).getStatus());
Assert.assertTrue(!upgradeChecks.get(0).getFailReason().equals("Unexpected server error happened"));
}
InternalCallVerifier EqualityVerifier
@Test public void testPreUpgradeCheckThrowsException() throws Exception {
final CheckHelper helper=new CheckHelper();
List updateChecksRegistry=new ArrayList();
AbstractCheckDescriptor descriptor=EasyMock.createNiceMock(AbstractCheckDescriptor.class);
descriptor.perform(EasyMock.anyObject(),EasyMock.anyObject());
EasyMock.expectLastCall().andThrow(new AmbariException("error"));
EasyMock.expect(descriptor.isApplicable(EasyMock.anyObject())).andReturn(true);
EasyMock.expect(descriptor.getDescription()).andReturn(CheckDescription.HOSTS_HEARTBEAT).anyTimes();
EasyMock.replay(descriptor);
updateChecksRegistry.add(descriptor);
final List upgradeChecks=helper.performChecks(new PrereqCheckRequest("cluster"),updateChecksRegistry);
EasyMock.verify(descriptor);
Assert.assertEquals(PrereqCheckStatus.FAIL,upgradeChecks.get(0).getStatus());
}
Class: org.apache.ambari.server.state.ConfigGroupTest InternalCallVerifier NullVerifier
@Test public void testDeleteConfigGroup() throws Exception {
ConfigGroup configGroup=createConfigGroup();
Assert.assertNotNull(configGroup);
Long id=configGroup.getId();
configGroup.delete();
Assert.assertNull(configGroupDAO.findById(id));
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
clusters=injector.getInstance(Clusters.class);
configFactory=injector.getInstance(ConfigFactory.class);
configGroupFactory=injector.getInstance(ConfigGroupFactory.class);
configGroupDAO=injector.getInstance(ConfigGroupDAO.class);
configGroupHostMappingDAO=injector.getInstance(ConfigGroupHostMappingDAO.class);
clusterName="foo";
clusters.addCluster(clusterName,new StackId("HDP-0.1"));
cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
clusters.addHost("h1");
clusters.addHost("h2");
Assert.assertNotNull(clusters.getHost("h1"));
Assert.assertNotNull(clusters.getHost("h2"));
clusters.getHost("h1").persist();
clusters.getHost("h2").persist();
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testRemoveHost() throws Exception {
ConfigGroup configGroup=createConfigGroup();
Assert.assertNotNull(configGroup);
Long id=configGroup.getId();
configGroup=cluster.getConfigGroups().get(id);
Assert.assertNotNull(configGroup);
clusters.unmapHostFromCluster("h1",clusterName);
Assert.assertNull(clusters.getHostsForCluster(clusterName).get("h1"));
Assert.assertNotNull(configGroupHostMappingDAO.findByHostId(1L));
Assert.assertTrue(configGroupHostMappingDAO.findByHostId(1L).isEmpty());
Assert.assertFalse(configGroup.getHosts().containsKey(1L));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test @Transactional public void testUpdateConfigGroup() throws Exception {
ConfigGroup configGroup=createConfigGroup();
Assert.assertNotNull(configGroup);
ConfigGroupEntity configGroupEntity=configGroupDAO.findById(configGroup.getId());
Assert.assertNotNull(configGroupEntity);
configGroup=configGroupFactory.createExisting(cluster,configGroupEntity);
Host host=clusters.getHost("h2");
configGroup.addHost(host);
Assert.assertEquals(2,configGroup.getHosts().values().size());
Map properties=new HashMap();
properties.put("key1","value1");
Map> propertiesAttributes=new HashMap>();
Map attributes=new HashMap();
attributes.put("key1","true");
propertiesAttributes.put("final",attributes);
Config config=new ConfigImpl("test-site");
config.setProperties(properties);
config.setPropertiesAttributes(propertiesAttributes);
config.setTag("version100");
configGroup.addConfiguration(config);
Assert.assertEquals(2,configGroup.getConfigurations().values().size());
configGroup.setName("NewName");
configGroup.setDescription("NewDesc");
configGroup.setTag("NewTag");
configGroup.persist();
configGroup.refresh();
configGroupEntity=configGroupDAO.findByName("NewName");
Assert.assertNotNull(configGroupEntity);
Assert.assertEquals(2,configGroupEntity.getConfigGroupHostMappingEntities().size());
Assert.assertEquals(2,configGroupEntity.getConfigGroupConfigMappingEntities().size());
Assert.assertEquals("NewTag",configGroupEntity.getTag());
Assert.assertEquals("NewDesc",configGroupEntity.getDescription());
Assert.assertNotNull(cluster.getConfig("test-site","version100"));
ConfigGroupConfigMappingEntity configMappingEntity=null;
Object[] array=configGroupEntity.getConfigGroupConfigMappingEntities().toArray();
for ( Object o : array) {
if ("test-site".equals(((ConfigGroupConfigMappingEntity)o).getConfigType())) {
configMappingEntity=(ConfigGroupConfigMappingEntity)o;
break;
}
}
Assert.assertNotNull(configMappingEntity);
Assert.assertTrue(configMappingEntity.getClusterConfigEntity().getData().contains("{\"key1\":\"value1\"}"));
Assert.assertEquals("{\"final\":{\"key1\":\"true\"}}",configMappingEntity.getClusterConfigEntity().getAttributes());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateNewConfigGroup() throws Exception {
ConfigGroup configGroup=createConfigGroup();
Assert.assertNotNull(configGroup);
ConfigGroupEntity configGroupEntity=configGroupDAO.findByName("cg-test");
Assert.assertNotNull(configGroupEntity);
Assert.assertEquals("HDFS",configGroupEntity.getTag());
ConfigGroupConfigMappingEntity configMappingEntity=configGroupEntity.getConfigGroupConfigMappingEntities().iterator().next();
Assert.assertNotNull(configMappingEntity);
Assert.assertEquals("hdfs-site",configMappingEntity.getConfigType());
Assert.assertEquals("testversion",configMappingEntity.getVersionTag());
Assert.assertNotNull(configMappingEntity.getClusterConfigEntity());
Assert.assertTrue(configMappingEntity.getClusterConfigEntity().getData().contains("a"));
Assert.assertEquals("{\"final\":{\"a\":\"true\"}}",configMappingEntity.getClusterConfigEntity().getAttributes());
ConfigGroupHostMappingEntity hostMappingEntity=configGroupEntity.getConfigGroupHostMappingEntities().iterator().next();
Assert.assertNotNull(hostMappingEntity);
Assert.assertEquals("h1",hostMappingEntity.getHostname());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetConfigGroup() throws Exception {
ConfigGroup configGroup=createConfigGroup();
Assert.assertNotNull(configGroup);
Assert.assertNotNull(cluster.getConfigGroups().get(configGroup.getId()));
ConfigGroupEntity configGroupEntity=configGroupDAO.findById(configGroup.getId());
Collection configMappingEntities=configGroupEntity.getConfigGroupConfigMappingEntities();
Collection hostMappingEntities=configGroupEntity.getConfigGroupHostMappingEntities();
Assert.assertEquals(configGroup.getId(),configGroupEntity.getGroupId());
Assert.assertEquals(configGroup.getTag(),configGroupEntity.getTag());
Assert.assertNotNull(configMappingEntities);
Assert.assertNotNull(hostMappingEntities);
Assert.assertEquals("h1",hostMappingEntities.iterator().next().getHostname());
ConfigGroupConfigMappingEntity configMappingEntity=configMappingEntities.iterator().next();
Assert.assertEquals("hdfs-site",configMappingEntity.getConfigType());
Assert.assertEquals("testversion",configMappingEntity.getVersionTag());
}
Class: org.apache.ambari.server.state.ConfigHelperTest.RunWithCustomModule APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetServicePropertiesDoNoRemoveExcluded() throws Exception {
StackId mockStackVersion=createStrictMock(StackId.class);
AmbariMetaInfo mockAmbariMetaInfo=injector.getInstance(AmbariMetaInfo.class);
ServiceInfo mockServiceInfo=createStrictMock(ServiceInfo.class);
PropertyInfo mockPropertyInfo1=createStrictMock(PropertyInfo.class);
PropertyInfo mockPropertyInfo2=createStrictMock(PropertyInfo.class);
List serviceProperties=Arrays.asList(mockPropertyInfo1,mockPropertyInfo2);
expect(mockStackVersion.getStackName()).andReturn("HDP").once();
expect(mockStackVersion.getStackVersion()).andReturn("2.2").once();
expect(mockAmbariMetaInfo.getService("HDP","2.2","SERVICE")).andReturn(mockServiceInfo).once();
expect(mockServiceInfo.getProperties()).andReturn(serviceProperties).once();
replay(mockAmbariMetaInfo,mockStackVersion,mockServiceInfo,mockPropertyInfo1,mockPropertyInfo2);
mockAmbariMetaInfo.init();
Set result=injector.getInstance(ConfigHelper.class).getServiceProperties(mockStackVersion,"SERVICE",false);
Assert.assertNotNull(result);
Assert.assertEquals(2,result.size());
verify(mockAmbariMetaInfo,mockStackVersion,mockServiceInfo,mockPropertyInfo1,mockPropertyInfo2);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetServicePropertiesRemoveExcluded() throws Exception {
StackId mockStackVersion=createStrictMock(StackId.class);
AmbariMetaInfo mockAmbariMetaInfo=injector.getInstance(AmbariMetaInfo.class);
ServiceInfo mockServiceInfo=createStrictMock(ServiceInfo.class);
PropertyInfo mockPropertyInfo1=createStrictMock(PropertyInfo.class);
PropertyInfo mockPropertyInfo2=createStrictMock(PropertyInfo.class);
List serviceProperties=Arrays.asList(mockPropertyInfo1,mockPropertyInfo2);
expect(mockStackVersion.getStackName()).andReturn("HDP").once();
expect(mockStackVersion.getStackVersion()).andReturn("2.2").once();
expect(mockAmbariMetaInfo.getService("HDP","2.2","SERVICE")).andReturn(mockServiceInfo).once();
expect(mockServiceInfo.getProperties()).andReturn(serviceProperties).once();
expect(mockServiceInfo.getExcludedConfigTypes()).andReturn(Collections.singleton("excluded-type")).once();
expect(mockPropertyInfo1.getFilename()).andReturn("included-type.xml").times(2);
expect(mockPropertyInfo2.getFilename()).andReturn("excluded-type.xml").once();
replay(mockAmbariMetaInfo,mockStackVersion,mockServiceInfo,mockPropertyInfo1,mockPropertyInfo2);
mockAmbariMetaInfo.init();
Set result=injector.getInstance(ConfigHelper.class).getServiceProperties(mockStackVersion,"SERVICE",true);
Assert.assertNotNull(result);
Assert.assertEquals(1,result.size());
Assert.assertEquals("included-type.xml",result.iterator().next().getFilename());
verify(mockAmbariMetaInfo,mockStackVersion,mockServiceInfo,mockPropertyInfo1,mockPropertyInfo2);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetServicePropertiesSimpleInvocation() throws Exception {
Cluster mockCluster=createStrictMock(Cluster.class);
StackId mockStackVersion=createStrictMock(StackId.class);
AmbariMetaInfo mockAmbariMetaInfo=injector.getInstance(AmbariMetaInfo.class);
ServiceInfo mockServiceInfo=createStrictMock(ServiceInfo.class);
PropertyInfo mockPropertyInfo1=createStrictMock(PropertyInfo.class);
PropertyInfo mockPropertyInfo2=createStrictMock(PropertyInfo.class);
List serviceProperties=Arrays.asList(mockPropertyInfo1,mockPropertyInfo2);
expect(mockCluster.getCurrentStackVersion()).andReturn(mockStackVersion).once();
expect(mockStackVersion.getStackName()).andReturn("HDP").once();
expect(mockStackVersion.getStackVersion()).andReturn("2.2").once();
expect(mockAmbariMetaInfo.getService("HDP","2.2","SERVICE")).andReturn(mockServiceInfo).once();
expect(mockServiceInfo.getProperties()).andReturn(serviceProperties).once();
replay(mockAmbariMetaInfo,mockCluster,mockStackVersion,mockServiceInfo,mockPropertyInfo1,mockPropertyInfo2);
mockAmbariMetaInfo.init();
Set result=injector.getInstance(ConfigHelper.class).getServiceProperties(mockCluster,"SERVICE");
Assert.assertNotNull(result);
Assert.assertEquals(2,result.size());
verify(mockAmbariMetaInfo,mockCluster,mockStackVersion,mockServiceInfo,mockPropertyInfo1,mockPropertyInfo2);
}
Class: org.apache.ambari.server.state.ConfigHelperTest.RunWithInMemoryDefaultTestModule InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateConfigTypeNoPropertyAttributes() throws Exception {
Config currentConfig=cluster.getDesiredConfigByType("oozie-site");
Map properties=currentConfig.getProperties();
Assert.assertEquals("version1",currentConfig.getTag());
Assert.assertEquals("simple",properties.get("oozie.authentication.type"));
Assert.assertEquals("false",properties.get("oozie.service.HadoopAccessorService.kerberos.enabled"));
Map updates=new HashMap();
updates.put("oozie.authentication.type","kerberos");
updates.put("oozie.service.HadoopAccessorService.kerberos.enabled","true");
configHelper.updateConfigType(cluster,managementController,"oozie-site",updates,null,"admin","Test " + "note");
Config updatedConfig=cluster.getDesiredConfigByType("oozie-site");
Assert.assertFalse("version1".equals(updatedConfig.getTag()));
properties=updatedConfig.getProperties();
Assert.assertTrue(properties.containsKey("oozie.authentication.type"));
Assert.assertEquals("kerberos",properties.get("oozie.authentication.type"));
Assert.assertTrue(properties.containsKey("oozie.service.HadoopAccessorService.kerberos.enabled"));
Assert.assertEquals("true",properties.get("oozie.service.HadoopAccessorService.kerberos.enabled"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testEffectivePropertiesWithOverrides() throws Exception {
final Config config1=new ConfigImpl("core-site");
config1.setTag("version122");
Map properties=new HashMap();
properties.put("a","b");
properties.put("c","d");
config1.setProperties(properties);
final Config config2=new ConfigImpl("global");
config2.setTag("version122");
Map properties2=new HashMap();
properties2.put("namenode_heapsize","1111");
config2.setProperties(properties2);
Long groupId=addConfigGroup("g1","t1",new ArrayList(){
{
add("h1");
}
}
,new ArrayList(){
{
add(config1);
add(config2);
}
}
);
Assert.assertNotNull(groupId);
Map> propertyMap=configHelper.getEffectiveConfigProperties(cluster,configHelper.getEffectiveDesiredTags(cluster,"h1"));
Assert.assertNotNull(propertyMap);
Assert.assertTrue(propertyMap.containsKey("global"));
Map globalProps=propertyMap.get("global");
Assert.assertEquals("1111",globalProps.get("namenode_heapsize"));
Assert.assertEquals("/hadoop/hdfs/namenode",globalProps.get("dfs_namenode_name_dir"));
Assert.assertTrue(propertyMap.containsKey("core-site"));
Map coreProps=propertyMap.get("core-site");
Assert.assertTrue(coreProps.containsKey("a"));
Assert.assertTrue(coreProps.containsKey("c"));
Assert.assertEquals("30",coreProps.get("ipc.client.connect.max.retries"));
}
InternalCallVerifier BooleanVerifier
@Test public void testCalculateIsStaleConfigs() throws Exception {
Map schReturn=new HashMap();
HostConfig hc=new HostConfig();
hc.setDefaultVersionTag("version2");
schReturn.put("flume-conf",hc);
ServiceComponentHost sch=createNiceMock(ServiceComponentHost.class);
expect(sch.getActualConfigs()).andReturn(schReturn).times(6);
expect(sch.getHostName()).andReturn("h1").anyTimes();
expect(sch.getClusterId()).andReturn(1l).anyTimes();
expect(sch.getServiceName()).andReturn("FLUME").anyTimes();
expect(sch.getServiceComponentName()).andReturn("FLUME_HANDLER").anyTimes();
replay(sch);
Assert.assertTrue(configHelper.isStaleConfigs(sch));
HostConfig hc2=new HostConfig();
hc2.setDefaultVersionTag("version1");
schReturn.put("flume-conf",hc2);
configHelper.invalidateStaleConfigsCache();
Assert.assertFalse(configHelper.isStaleConfigs(sch));
List hosts=new ArrayList();
hosts.add("h1");
List configs=new ArrayList();
ConfigImpl configImpl=new ConfigImpl("flume-conf");
configImpl.setTag("FLUME1");
configs.add(configImpl);
addConfigGroup("configGroup1","FLUME",hosts,configs);
Assert.assertTrue(configHelper.isStaleConfigs(sch));
HostConfig hc3=new HostConfig();
hc3.setDefaultVersionTag("version1");
hc3.getConfigGroupOverrides().put(1l,"FLUME1");
schReturn.put("flume-conf",hc3);
configHelper.invalidateStaleConfigsCache();
Assert.assertFalse(configHelper.isStaleConfigs(sch));
HostConfig hc4=new HostConfig();
hc4.setDefaultVersionTag("version1");
hc4.getConfigGroupOverrides().put(1l,"FLUME2");
schReturn.put("flume-conf",hc4);
configHelper.invalidateStaleConfigsCache();
Assert.assertTrue(configHelper.isStaleConfigs(sch));
HostConfig hc5=new HostConfig();
hc5.setDefaultVersionTag("version3");
hc5.getConfigGroupOverrides().put(1l,"FLUME1");
schReturn.put("flume-conf",hc5);
configHelper.invalidateStaleConfigsCache();
Assert.assertTrue(configHelper.isStaleConfigs(sch));
verify(sch);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testEffectivePropertiesAttributesWithOverrides() throws Exception {
final Config config1=new ConfigImpl("core-site");
config1.setTag("version122");
Map attributes=new HashMap();
attributes.put("fs.trash.interval","11");
attributes.put("b","y");
Map> config1Attributes=new HashMap>();
config1Attributes.put("attribute1",attributes);
config1.setPropertiesAttributes(config1Attributes);
final Config config2=new ConfigImpl("global");
config2.setTag("version122");
attributes=new HashMap();
attributes.put("namenode_heapsize","z");
attributes.put("c","q");
Map> config2Attributes=new HashMap>();
config2Attributes.put("attribute2",attributes);
config2.setPropertiesAttributes(config2Attributes);
Long groupId=addConfigGroup("g1","t1",new ArrayList(){
{
add("h1");
}
}
,new ArrayList(){
{
add(config1);
add(config2);
}
}
);
Assert.assertNotNull(groupId);
Map>> effectiveAttributes=configHelper.getEffectiveConfigAttributes(cluster,configHelper.getEffectiveDesiredTags(cluster,"h1"));
Assert.assertNotNull(effectiveAttributes);
Assert.assertEquals(4,effectiveAttributes.size());
Assert.assertTrue(effectiveAttributes.containsKey("global"));
Map> globalAttrs=effectiveAttributes.get("global");
Assert.assertEquals(1,globalAttrs.size());
Assert.assertTrue(globalAttrs.containsKey("attribute2"));
Map attribute2Occurances=globalAttrs.get("attribute2");
Assert.assertEquals(3,attribute2Occurances.size());
Assert.assertTrue(attribute2Occurances.containsKey("namenode_heapsize"));
Assert.assertEquals("z",attribute2Occurances.get("namenode_heapsize"));
Assert.assertTrue(attribute2Occurances.containsKey("dfs_namenode_name_dir"));
Assert.assertEquals("3",attribute2Occurances.get("dfs_namenode_name_dir"));
Assert.assertTrue(attribute2Occurances.containsKey("c"));
Assert.assertEquals("q",attribute2Occurances.get("c"));
Assert.assertTrue(effectiveAttributes.containsKey("core-site"));
Map> coreAttrs=effectiveAttributes.get("core-site");
Assert.assertEquals(1,coreAttrs.size());
Assert.assertTrue(coreAttrs.containsKey("attribute1"));
Map attribute1Occurances=coreAttrs.get("attribute1");
Assert.assertEquals(3,attribute1Occurances.size());
Assert.assertTrue(attribute1Occurances.containsKey("ipc.client.connect.max.retries"));
Assert.assertEquals("1",attribute1Occurances.get("ipc.client.connect.max.retries"));
Assert.assertTrue(attribute1Occurances.containsKey("fs.trash.interval"));
Assert.assertEquals("11",attribute1Occurances.get("fs.trash.interval"));
Assert.assertTrue(attribute1Occurances.containsKey("b"));
Assert.assertEquals("y",attribute1Occurances.get("b"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testEffectiveTagsForHost() throws Exception {
final Config config=new ConfigImpl("core-site");
config.setTag("version122");
Map properties=new HashMap();
properties.put("a","b");
properties.put("c","d");
config.setProperties(properties);
Long groupId=addConfigGroup("g1","t1",new ArrayList(){
{
add("h1");
}
}
,new ArrayList(){
{
add(config);
}
}
);
Assert.assertNotNull(groupId);
Map> configTags=configHelper.getEffectiveDesiredTags(cluster,"h1");
Assert.assertNotNull(configTags);
Map tagsWithOverrides=configTags.get("core-site");
Assert.assertNotNull(tagsWithOverrides);
Assert.assertTrue(tagsWithOverrides.containsKey(ConfigHelper.CLUSTER_DEFAULT_TAG));
Assert.assertEquals("version1",tagsWithOverrides.get(ConfigHelper.CLUSTER_DEFAULT_TAG));
Assert.assertTrue(tagsWithOverrides.containsKey(groupId.toString()));
Assert.assertEquals("version122",tagsWithOverrides.get(groupId.toString()));
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator("admin"));
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
clusters=injector.getInstance(Clusters.class);
configGroupFactory=injector.getInstance(ConfigGroupFactory.class);
configHelper=injector.getInstance(ConfigHelper.class);
managementController=injector.getInstance(AmbariManagementController.class);
clusterName="c1";
clusters.addCluster(clusterName,new StackId("HDP-2.0.6"));
cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
clusters.addHost("h1");
clusters.addHost("h2");
Assert.assertNotNull(clusters.getHost("h1"));
Assert.assertNotNull(clusters.getHost("h2"));
clusters.getHost("h1").persist();
clusters.getHost("h2").persist();
ConfigurationRequest cr=new ConfigurationRequest();
cr.setClusterName(clusterName);
cr.setType("core-site");
cr.setVersionTag("version1");
cr.setProperties(new HashMap(){
{
put("ipc.client.connect.max.retries","30");
put("fs.trash.interval","30");
}
}
);
cr.setPropertiesAttributes(new HashMap>(){
{
Map attrs=new HashMap();
attrs.put("ipc.client.connect.max.retries","1");
attrs.put("fs.trash.interval","2");
put("attribute1",attrs);
}
}
);
final ClusterRequest clusterRequest1=new ClusterRequest(cluster.getClusterId(),clusterName,cluster.getDesiredStackVersion().getStackVersion(),null);
clusterRequest1.setDesiredConfig(Collections.singletonList(cr));
managementController.updateClusters(new HashSet(){
{
add(clusterRequest1);
}
}
,null);
ConfigurationRequest cr2=new ConfigurationRequest();
cr2.setClusterName(clusterName);
cr2.setType("flume-conf");
cr2.setVersionTag("version1");
final ClusterRequest clusterRequest2=new ClusterRequest(cluster.getClusterId(),clusterName,cluster.getDesiredStackVersion().getStackVersion(),null);
clusterRequest2.setDesiredConfig(Collections.singletonList(cr2));
managementController.updateClusters(new HashSet(){
{
add(clusterRequest2);
}
}
,null);
cr.setType("global");
cr.setVersionTag("version1");
cr.setProperties(new HashMap(){
{
put("dfs_namenode_name_dir","/hadoop/hdfs/namenode");
put("namenode_heapsize","1024");
}
}
);
cr.setPropertiesAttributes(new HashMap>(){
{
Map attrs=new HashMap();
attrs.put("dfs_namenode_name_dir","3");
attrs.put("namenode_heapsize","4");
put("attribute2",attrs);
}
}
);
final ClusterRequest clusterRequest3=new ClusterRequest(cluster.getClusterId(),clusterName,cluster.getDesiredStackVersion().getStackVersion(),null);
clusterRequest3.setDesiredConfig(Collections.singletonList(cr));
managementController.updateClusters(new HashSet(){
{
add(clusterRequest3);
}
}
,null);
ConfigurationRequest cr4=new ConfigurationRequest();
cr4.setClusterName(clusterName);
cr4.setType("oozie-site");
cr4.setVersionTag("version1");
cr4.setProperties(new HashMap(){
{
put("oozie.authentication.type","simple");
put("oozie.service.HadoopAccessorService.kerberos.enabled","false");
}
}
);
cr4.setPropertiesAttributes(null);
final ClusterRequest clusterRequest4=new ClusterRequest(cluster.getClusterId(),clusterName,cluster.getDesiredStackVersion().getStackVersion(),null);
clusterRequest4.setDesiredConfig(Collections.singletonList(cr4));
managementController.updateClusters(new HashSet(){
{
add(clusterRequest4);
}
}
,null);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMergeAttributesWithNoAttributeOverrides() throws Exception {
Map> persistedAttributes=new HashMap>();
Map persistedFinalAttrs=new HashMap();
persistedFinalAttrs.put("a","true");
persistedFinalAttrs.put("c","true");
persistedFinalAttrs.put("d","true");
persistedAttributes.put("final",persistedFinalAttrs);
Map> confGroupAttributes=new HashMap>();
Map confGroupProperties=new HashMap();
confGroupProperties.put("a","any");
confGroupProperties.put("b","any");
confGroupProperties.put("c","any");
Config overrideConfig=new ConfigImpl(cluster,"type",confGroupProperties,confGroupAttributes,injector);
Map> result=configHelper.overrideAttributes(overrideConfig,persistedAttributes);
Assert.assertNotNull(result);
Assert.assertEquals(1,result.size());
Map finalResultAttributes=result.get("final");
Assert.assertNotNull(finalResultAttributes);
Assert.assertEquals(1,finalResultAttributes.size());
Assert.assertEquals("true",finalResultAttributes.get("d"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMergeAttributesWithNullAttributes() throws Exception {
Map> persistedAttributes=new HashMap>();
Map persistedFinalAttrs=new HashMap();
persistedFinalAttrs.put("a","true");
persistedFinalAttrs.put("c","true");
persistedFinalAttrs.put("d","true");
persistedAttributes.put("final",persistedFinalAttrs);
Map confGroupProperties=new HashMap();
confGroupProperties.put("a","any");
confGroupProperties.put("b","any");
confGroupProperties.put("c","any");
Config overrideConfig=new ConfigImpl(cluster,"type",confGroupProperties,null,injector);
Map> result=configHelper.overrideAttributes(overrideConfig,persistedAttributes);
Assert.assertNotNull(result);
Assert.assertEquals(1,result.size());
Map finalResultAttributes=result.get("final");
Assert.assertNotNull(finalResultAttributes);
Assert.assertEquals(3,finalResultAttributes.size());
Assert.assertEquals("true",finalResultAttributes.get("a"));
Assert.assertEquals("true",finalResultAttributes.get("c"));
Assert.assertEquals("true",finalResultAttributes.get("d"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateConfigType() throws Exception {
Config currentConfig=cluster.getDesiredConfigByType("core-site");
Map properties=currentConfig.getProperties();
Map> propertiesAttributes=currentConfig.getPropertiesAttributes();
Assert.assertNotNull(propertiesAttributes);
Assert.assertEquals(1,propertiesAttributes.size());
Assert.assertTrue(propertiesAttributes.containsKey("attribute1"));
Assert.assertEquals("version1",currentConfig.getTag());
Assert.assertEquals("30",properties.get("fs.trash.interval"));
Assert.assertTrue(properties.containsKey("ipc.client.connect.max.retries"));
Assert.assertTrue(propertiesAttributes.get("attribute1").containsKey("ipc.client.connect.max.retries"));
Map updates=new HashMap();
updates.put("new-property","new-value");
updates.put("fs.trash.interval","updated-value");
Collection removals=Collections.singletonList("ipc.client.connect.max.retries");
configHelper.updateConfigType(cluster,managementController,"core-site",updates,removals,"admin","Test note");
Config updatedConfig=cluster.getDesiredConfigByType("core-site");
propertiesAttributes=updatedConfig.getPropertiesAttributes();
Assert.assertNotNull(propertiesAttributes);
Assert.assertEquals(1,propertiesAttributes.size());
Assert.assertTrue(propertiesAttributes.containsKey("attribute1"));
Assert.assertFalse("version1".equals(updatedConfig.getTag()));
properties=updatedConfig.getProperties();
Assert.assertTrue(properties.containsKey("new-property"));
Assert.assertEquals("new-value",properties.get("new-property"));
Assert.assertTrue(properties.containsKey("fs.trash.interval"));
Assert.assertEquals("updated-value",properties.get("fs.trash.interval"));
Assert.assertEquals("2",propertiesAttributes.get("attribute1").get("fs.trash.interval"));
Assert.assertFalse(properties.containsKey("ipc.client.connect.max.retries"));
Assert.assertFalse(propertiesAttributes.get("attribute1").containsKey("ipc.client.connect.max.retries"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMergeAttributes() throws Exception {
Map> persistedAttributes=new HashMap>();
Map persistedFinalAttrs=new HashMap();
persistedFinalAttrs.put("a","true");
persistedFinalAttrs.put("c","true");
persistedFinalAttrs.put("d","true");
persistedAttributes.put("final",persistedFinalAttrs);
Map> confGroupAttributes=new HashMap>();
Map confGroupFinalAttrs=new HashMap();
confGroupFinalAttrs.put("b","true");
confGroupAttributes.put("final",confGroupFinalAttrs);
Map confGroupProperties=new HashMap();
confGroupProperties.put("a","any");
confGroupProperties.put("b","any");
confGroupProperties.put("c","any");
Config overrideConfig=new ConfigImpl(cluster,"type",confGroupProperties,confGroupAttributes,injector);
Map> result=configHelper.overrideAttributes(overrideConfig,persistedAttributes);
Assert.assertNotNull(result);
Assert.assertEquals(1,result.size());
Map finalResultAttributes=result.get("final");
Assert.assertNotNull(finalResultAttributes);
Assert.assertEquals(2,finalResultAttributes.size());
Assert.assertEquals("true",finalResultAttributes.get("b"));
Assert.assertEquals("true",finalResultAttributes.get("d"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMergeAttributesWithNullProperties() throws Exception {
Map> persistedAttributes=new HashMap>();
Map persistedFinalAttrs=new HashMap();
persistedFinalAttrs.put("a","true");
persistedFinalAttrs.put("c","true");
persistedFinalAttrs.put("d","true");
persistedAttributes.put("final",persistedFinalAttrs);
Map> confGroupAttributes=new HashMap>();
Map confGroupFinalAttrs=new HashMap();
confGroupFinalAttrs.put("b","true");
confGroupAttributes.put("final",confGroupFinalAttrs);
Config overrideConfig=new ConfigImpl(cluster,"type",null,confGroupAttributes,injector);
Map> result=configHelper.overrideAttributes(overrideConfig,persistedAttributes);
Assert.assertNotNull(result);
Assert.assertEquals(1,result.size());
Map finalResultAttributes=result.get("final");
Assert.assertNotNull(finalResultAttributes);
Assert.assertEquals(4,finalResultAttributes.size());
Assert.assertEquals("true",finalResultAttributes.get("a"));
Assert.assertEquals("true",finalResultAttributes.get("b"));
Assert.assertEquals("true",finalResultAttributes.get("c"));
Assert.assertEquals("true",finalResultAttributes.get("d"));
}
Class: org.apache.ambari.server.state.ConfigMergeHelperTest APIUtilityVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetConflicts() throws Exception {
Cluster clusterMock=createNiceMock(Cluster.class);
expect(clustersMock.getCluster(anyString())).andReturn(clusterMock);
expect(clusterMock.getCurrentStackVersion()).andReturn(currentStackId);
expect(clusterMock.getServices()).andReturn(new HashMap(){
{
put("HDFS",createNiceMock(Service.class));
put("ZK",createNiceMock(Service.class));
}
}
);
Set currentHDFSProperties=new HashSet(){
{
add(createPropertyInfo("hdfs-env.xml","equal.key","equal-value"));
}
}
;
Set currentZKProperties=new HashSet(){
{
add(createPropertyInfo("zk-env.xml","different.key","different-value-1"));
}
}
;
Set currentStackProperties=new HashSet(){
{
add(createPropertyInfo("hadoop-env.xml","equal.key","modified.value"));
}
}
;
expect(ambariMetaInfoMock.getServiceProperties(currentStackId.getStackName(),currentStackId.getStackVersion(),"HDFS")).andReturn(currentHDFSProperties);
expect(ambariMetaInfoMock.getServiceProperties(currentStackId.getStackName(),currentStackId.getStackVersion(),"ZK")).andReturn(currentZKProperties);
expect(ambariMetaInfoMock.getStackProperties(currentStackId.getStackName(),currentStackId.getStackVersion())).andReturn(currentStackProperties);
Set newHDFSProperties=new HashSet(){
{
add(createPropertyInfo("hdfs-env.xml","equal.key","equal-value"));
add(createPropertyInfo("new-hdfs-config.xml","equal.key","equal-value"));
}
}
;
Set newZKProperties=new HashSet(){
{
add(createPropertyInfo("zk-env.xml","equal.key","different-value-2"));
add(createPropertyInfo("zk-env.xml","new.key","new-value-2"));
}
}
;
Set newStackProperties=new HashSet(){
{
add(createPropertyInfo("hadoop-env.xml","equal.key","another.value"));
}
}
;
expect(ambariMetaInfoMock.getServiceProperties(newStackId.getStackName(),newStackId.getStackVersion(),"HDFS")).andReturn(newHDFSProperties);
expect(ambariMetaInfoMock.getServiceProperties(newStackId.getStackName(),newStackId.getStackVersion(),"ZK")).andReturn(newZKProperties);
expect(ambariMetaInfoMock.getStackProperties(newStackId.getStackName(),newStackId.getStackVersion())).andReturn(newStackProperties);
Map desiredHdfsEnvProperties=new HashMap(){
{
}
}
;
expect(clusterMock.getDesiredConfigByType("hdfs-env.xml")).andReturn(createConfigMock(desiredHdfsEnvProperties));
Map desiredZkEnvProperties=new HashMap(){
{
}
}
;
expect(clusterMock.getDesiredConfigByType("hdfs-env.xml")).andReturn(createConfigMock(desiredZkEnvProperties));
Map desiredHadoopEnvProperties=new HashMap(){
{
}
}
;
expect(clusterMock.getDesiredConfigByType("hadoop-env.xml")).andReturn(createConfigMock(desiredHadoopEnvProperties));
replay(clusterMock,clustersMock,ambariMetaInfoMock);
ConfigMergeHelper configMergeHelper=injector.getInstance(ConfigMergeHelper.class);
Map> conflicts=configMergeHelper.getConflicts("clustername",newStackId);
assertNotNull(conflicts);
assertEquals(2,conflicts.size());
for ( String key : conflicts.keySet()) {
if (key.equals("hdfs-env")) {
Map stringThreeWayValueMap=conflicts.get(key);
assertEquals(1,stringThreeWayValueMap.size());
assertEquals("equal-value",stringThreeWayValueMap.get("equal.key").oldStackValue);
assertEquals("equal-value",stringThreeWayValueMap.get("equal.key").newStackValue);
assertEquals("",stringThreeWayValueMap.get("equal.key").savedValue);
}
else if (key.equals("hadoop-env")) {
Map stringThreeWayValueMap=conflicts.get(key);
assertEquals(1,stringThreeWayValueMap.size());
assertEquals("modified.value",stringThreeWayValueMap.get("equal.key").oldStackValue);
assertEquals("another.value",stringThreeWayValueMap.get("equal.key").newStackValue);
assertEquals("",stringThreeWayValueMap.get("equal.key").savedValue);
}
else {
fail("Unexpected key");
}
}
assertEquals(2,conflicts.size());
}
Class: org.apache.ambari.server.state.DesiredConfigTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDesiredConfig() throws Exception {
DesiredConfig dc=new DesiredConfig();
dc.setServiceName("service");
dc.setTag("global");
dc.setUser("_test");
Assert.assertEquals("Expected service 'service'","service",dc.getServiceName());
Assert.assertEquals("Expected version 'global'","global",dc.getTag());
Assert.assertEquals("Expected no host overrides",0,dc.getHostOverrides().size());
Assert.assertEquals("Expected user '_test'","_test",dc.getUser());
List hosts=Arrays.asList(new DesiredConfig.HostOverride("h1","v2"),new DesiredConfig.HostOverride("h2","v3"));
dc.setHostOverrides(hosts);
Assert.assertNotNull("Expected host overrides to be set",dc.getHostOverrides());
Assert.assertEquals("Expected host override equality",hosts,dc.getHostOverrides());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostOverride() throws Exception {
DesiredConfig.HostOverride override=new DesiredConfig.HostOverride("h1","v1");
Assert.assertNotNull(override.getName());
Assert.assertNotNull(override.getVersionTag());
Assert.assertEquals("Expected override host 'h1'","h1",override.getName());
Assert.assertEquals("Expected override version 'v1'","v1",override.getVersionTag());
}
Class: org.apache.ambari.server.state.PropertyInfoTest InternalCallVerifier EqualityVerifier
@Test public void testAttributes() throws Exception {
PropertyInfo property=new PropertyInfo();
List elements=new ArrayList();
Element e1=createNiceMock(Element.class);
Element e2=createNiceMock(Element.class);
Node n1=createNiceMock(Node.class);
Node n2=createNiceMock(Node.class);
elements.add(e1);
elements.add(e2);
expect(e1.getTagName()).andReturn("foo").anyTimes();
expect(e1.getFirstChild()).andReturn(n1).anyTimes();
expect(n1.getNodeValue()).andReturn("value1").anyTimes();
expect(e2.getTagName()).andReturn("bar").anyTimes();
expect(e2.getFirstChild()).andReturn(n2).anyTimes();
expect(n2.getNodeValue()).andReturn("value2").anyTimes();
replay(e1,e2,n1,n2);
Field f=property.getClass().getDeclaredField("propertyAttributes");
f.setAccessible(true);
f.set(property,elements);
Map attributes=property.getAttributesMap();
assertEquals(2,attributes.size());
assertEquals("value1",attributes.get("foo"));
assertEquals("value2",attributes.get("bar"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testProperty(){
PropertyInfo property=new PropertyInfo();
property.setName("name");
property.setValue("value");
property.setDescription("desc");
property.setFilename("filename");
PropertyDependencyInfo pdi=new PropertyDependencyInfo("type","name");
property.getDependsOnProperties().add(pdi);
assertEquals("name",property.getName());
assertEquals("value",property.getValue());
assertEquals("desc",property.getDescription());
assertEquals("filename",property.getFilename());
assertEquals(1,property.getDependsOnProperties().size());
assertTrue(property.getDependsOnProperties().contains(pdi));
}
Class: org.apache.ambari.server.state.RequestExecutionTest InternalCallVerifier NullVerifier
@Test public void testDeleteRequestSchedule() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
Long id=requestExecution.getId();
requestExecution.delete();
Assert.assertNull(requestScheduleDAO.findById(id));
Assert.assertNull(cluster.getAllRequestExecutions().get(id));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateRequestSchedule() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
RequestScheduleEntity scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
Assert.assertNotNull(scheduleEntity);
Assert.assertEquals(requestExecution.getBatch().getBatchSettings().getTaskFailureToleranceLimit(),scheduleEntity.getBatchTolerationLimit());
Assert.assertEquals(scheduleEntity.getRequestScheduleBatchRequestEntities().size(),2);
Collection batchRequestEntities=scheduleEntity.getRequestScheduleBatchRequestEntities();
Assert.assertNotNull(batchRequestEntities);
RequestScheduleBatchRequestEntity reqEntity1=null;
RequestScheduleBatchRequestEntity reqEntity2=null;
for ( RequestScheduleBatchRequestEntity reqEntity : batchRequestEntities) {
if (reqEntity.getRequestUri().equals("testUri1")) {
reqEntity1=reqEntity;
}
else if (reqEntity.getRequestUri().equals("testUri2")) {
reqEntity2=reqEntity;
}
}
Assert.assertNotNull(reqEntity1);
Assert.assertNotNull(reqEntity2);
Assert.assertEquals(Long.valueOf(10L),reqEntity1.getBatchId());
Assert.assertEquals(Long.valueOf(12L),reqEntity2.getBatchId());
Assert.assertEquals(BatchRequest.Type.DELETE.name(),reqEntity1.getRequestType());
Assert.assertEquals(BatchRequest.Type.POST.name(),reqEntity2.getRequestType());
Assert.assertEquals(requestExecution.getSchedule().getMinutes(),scheduleEntity.getMinutes());
Assert.assertEquals(requestExecution.getSchedule().getEndTime(),scheduleEntity.getEndTime());
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
clusters=injector.getInstance(Clusters.class);
metaInfo=injector.getInstance(AmbariMetaInfo.class);
requestExecutionFactory=injector.getInstance(RequestExecutionFactory.class);
requestScheduleDAO=injector.getInstance(RequestScheduleDAO.class);
clusterName="foo";
clusters.addCluster(clusterName,new StackId("HDP-0.1"));
cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
clusters.addHost("h1");
clusters.addHost("h2");
clusters.addHost("h3");
Assert.assertNotNull(clusters.getHost("h1"));
Assert.assertNotNull(clusters.getHost("h2"));
Assert.assertNotNull(clusters.getHost("h3"));
clusters.getHost("h1").persist();
clusters.getHost("h2").persist();
clusters.getHost("h3").persist();
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateRequestSchedule() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
Long id=requestExecution.getId();
RequestScheduleEntity scheduleEntity=requestScheduleDAO.findById(id);
Assert.assertNotNull(scheduleEntity);
requestExecution=requestExecutionFactory.createExisting(cluster,scheduleEntity);
Batch batches=new Batch();
List batchRequests=new ArrayList();
BatchRequest batchRequest1=new BatchRequest();
batchRequest1.setOrderId(10L);
batchRequest1.setType(BatchRequest.Type.PUT);
batchRequest1.setUri("testUri3");
BatchRequest batchRequest2=new BatchRequest();
batchRequest2.setOrderId(12L);
batchRequest2.setType(BatchRequest.Type.POST);
batchRequest2.setUri("testUri4");
batchRequest2.setBody("testBody");
batchRequests.add(batchRequest1);
batchRequests.add(batchRequest2);
batches.getBatchRequests().addAll(batchRequests);
requestExecution.setBatch(batches);
requestExecution.getSchedule().setHours("11");
requestExecution.persist();
scheduleEntity=requestScheduleDAO.findById(id);
Assert.assertNotNull(scheduleEntity);
Collection batchRequestEntities=scheduleEntity.getRequestScheduleBatchRequestEntities();
Assert.assertNotNull(batchRequestEntities);
RequestScheduleBatchRequestEntity reqEntity1=null;
RequestScheduleBatchRequestEntity reqEntity2=null;
for ( RequestScheduleBatchRequestEntity reqEntity : batchRequestEntities) {
if (reqEntity.getRequestUri().equals("testUri3")) {
reqEntity1=reqEntity;
}
else if (reqEntity.getRequestUri().equals("testUri4")) {
reqEntity2=reqEntity;
}
}
Assert.assertNotNull(reqEntity1);
Assert.assertNotNull(reqEntity2);
Assert.assertEquals(Long.valueOf(10L),reqEntity1.getBatchId());
Assert.assertEquals(Long.valueOf(12L),reqEntity2.getBatchId());
Assert.assertEquals(BatchRequest.Type.PUT.name(),reqEntity1.getRequestType());
Assert.assertEquals(BatchRequest.Type.POST.name(),reqEntity2.getRequestType());
Assert.assertEquals("11",scheduleEntity.getHours());
}
InternalCallVerifier NullVerifier
@Test public void testGetRequestScheduleWithRequestBody() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
Assert.assertNotNull(cluster.getAllRequestExecutions().get(requestExecution.getId()));
RequestScheduleEntity scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
Assert.assertNotNull(scheduleEntity);
requestExecution=requestExecutionFactory.createExisting(cluster,scheduleEntity);
BatchRequest postBatchRequest=null;
List batchRequests=requestExecution.getBatch().getBatchRequests();
Assert.assertNotNull(batchRequests);
for ( BatchRequest batchRequest : batchRequests) {
if (batchRequest.getType().equals(BatchRequest.Type.POST.name())) {
postBatchRequest=batchRequest;
}
}
Assert.assertNotNull(postBatchRequest);
Assert.assertNull(postBatchRequest.getBody());
RequestScheduleResponse requestScheduleResponse=requestExecution.convertToResponseWithBody();
Assert.assertNotNull(requestScheduleResponse);
batchRequests=requestExecution.getBatch().getBatchRequests();
Assert.assertNotNull(batchRequests);
for ( BatchRequest batchRequest : batchRequests) {
if (batchRequest.getType().equals(BatchRequest.Type.POST.name())) {
postBatchRequest=batchRequest;
}
}
Assert.assertNotNull(postBatchRequest);
Assert.assertNotNull(postBatchRequest.getBody());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateStatus() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
Assert.assertNotNull(cluster.getAllRequestExecutions().get(requestExecution.getId()));
RequestScheduleEntity scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
Assert.assertNotNull(scheduleEntity);
Assert.assertEquals(RequestExecution.Status.SCHEDULED.name(),scheduleEntity.getStatus());
requestExecution.updateStatus(RequestExecution.Status.COMPLETED);
scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
Assert.assertNotNull(scheduleEntity);
Assert.assertEquals(RequestExecution.Status.COMPLETED.name(),scheduleEntity.getStatus());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateBatchRequest() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
Assert.assertNotNull(cluster.getAllRequestExecutions().get(requestExecution.getId()));
RequestScheduleEntity scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
Assert.assertNotNull(scheduleEntity);
Assert.assertEquals(RequestExecution.Status.SCHEDULED.name(),scheduleEntity.getStatus());
Collection batchRequestEntities=scheduleEntity.getRequestScheduleBatchRequestEntities();
Assert.assertNotNull(batchRequestEntities);
Assert.assertEquals(2,batchRequestEntities.size());
BatchRequestResponse batchRequestResponse=new BatchRequestResponse();
batchRequestResponse.setRequestId(1L);
batchRequestResponse.setReturnCode(200);
batchRequestResponse.setReturnMessage("test");
batchRequestResponse.setStatus("IN_PROGRESS");
requestExecution.updateBatchRequest(10L,batchRequestResponse,false);
scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
RequestScheduleBatchRequestEntity testEntity=null;
for ( RequestScheduleBatchRequestEntity entity : scheduleEntity.getRequestScheduleBatchRequestEntities()) {
if (entity.getBatchId().equals(10L)) {
testEntity=entity;
}
}
Assert.assertNotNull(testEntity);
Assert.assertEquals(200,testEntity.getReturnCode().intValue());
Assert.assertEquals("test",testEntity.getReturnMessage());
Assert.assertEquals("IN_PROGRESS",testEntity.getRequestStatus());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRequestSchedule() throws Exception {
RequestExecution requestExecution=createRequestSchedule();
Assert.assertNotNull(requestExecution);
RequestScheduleEntity scheduleEntity=requestScheduleDAO.findById(requestExecution.getId());
Assert.assertNotNull(scheduleEntity);
Assert.assertNotNull(cluster.getAllRequestExecutions().get(requestExecution.getId()));
Assert.assertNotNull(scheduleEntity);
Assert.assertEquals(requestExecution.getBatch().getBatchSettings().getTaskFailureToleranceLimit(),scheduleEntity.getBatchTolerationLimit());
Assert.assertEquals(scheduleEntity.getRequestScheduleBatchRequestEntities().size(),2);
Collection batchRequestEntities=scheduleEntity.getRequestScheduleBatchRequestEntities();
Assert.assertNotNull(batchRequestEntities);
RequestScheduleBatchRequestEntity reqEntity1=null;
RequestScheduleBatchRequestEntity reqEntity2=null;
for ( RequestScheduleBatchRequestEntity reqEntity : batchRequestEntities) {
if (reqEntity.getRequestUri().equals("testUri1")) {
reqEntity1=reqEntity;
}
else if (reqEntity.getRequestUri().equals("testUri2")) {
reqEntity2=reqEntity;
}
}
Assert.assertNotNull(reqEntity1);
Assert.assertNotNull(reqEntity2);
Assert.assertEquals(Long.valueOf(10L),reqEntity1.getBatchId());
Assert.assertEquals(Long.valueOf(12L),reqEntity2.getBatchId());
Assert.assertEquals(BatchRequest.Type.DELETE.name(),reqEntity1.getRequestType());
Assert.assertEquals(BatchRequest.Type.POST.name(),reqEntity2.getRequestType());
Assert.assertEquals(requestExecution.getSchedule().getMinutes(),scheduleEntity.getMinutes());
Assert.assertEquals(requestExecution.getSchedule().getEndTime(),scheduleEntity.getEndTime());
}
Class: org.apache.ambari.server.state.ServiceComponentTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetAndSetServiceComponentInfo() throws AmbariException {
String componentName="NAMENODE";
ServiceComponent component=serviceComponentFactory.createNew(service,componentName);
service.addServiceComponent(component);
component.persist();
ServiceComponent sc=service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
sc.setDesiredState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED,sc.getDesiredState());
sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
Assert.assertEquals("HDP-1.2.0",sc.getDesiredStackVersion().getStackId());
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO=injector.getInstance(ServiceComponentDesiredStateDAO.class);
ServiceComponentDesiredStateEntityPK primaryKey=new ServiceComponentDesiredStateEntityPK();
primaryKey.setClusterId(cluster.getClusterId());
primaryKey.setComponentName(componentName);
primaryKey.setServiceName(serviceName);
ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity=serviceComponentDesiredStateDAO.findByPK(primaryKey);
ServiceComponent sc1=serviceComponentFactory.createExisting(service,serviceComponentDesiredStateEntity);
Assert.assertNotNull(sc1);
Assert.assertEquals(State.INSTALLED,sc1.getDesiredState());
Assert.assertEquals("HDP-1.2.0",sc1.getDesiredStackVersion().getStackId());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConvertToResponse() throws AmbariException {
String componentName="NAMENODE";
ServiceComponent component=serviceComponentFactory.createNew(service,componentName);
service.addServiceComponent(component);
component.persist();
addHostToCluster("h1",service.getCluster().getClusterName());
ServiceComponentHost sch=serviceComponentHostFactory.createNew(component,"h1");
sch.setState(State.INSTALLED);
Map compHosts=new HashMap();
compHosts.put("h1",sch);
component.addServiceComponentHosts(compHosts);
Assert.assertEquals(1,component.getServiceComponentHosts().size());
sch.persist();
ServiceComponent sc=service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
sc.setDesiredState(State.INSTALLED);
sc.setDesiredStackVersion(new StackId("HDP-1.2.0"));
ServiceComponentResponse r=sc.convertToResponse();
Assert.assertEquals(sc.getClusterName(),r.getClusterName());
Assert.assertEquals(sc.getClusterId(),r.getClusterId().longValue());
Assert.assertEquals(sc.getName(),r.getComponentName());
Assert.assertEquals(sc.getServiceName(),r.getServiceName());
Assert.assertEquals(sc.getDesiredStackVersion().getStackId(),r.getDesiredStackVersion());
Assert.assertEquals(sc.getDesiredState().toString(),r.getDesiredState());
Assert.assertEquals(1,r.getTotalCount());
Assert.assertEquals(0,r.getStartedCount());
Assert.assertEquals(1,r.getInstalledCount());
StringBuilder sb=new StringBuilder();
sc.debugDump(sb);
Assert.assertFalse(sb.toString().isEmpty());
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddAndGetServiceComponentHosts() throws AmbariException {
String componentName="NAMENODE";
ServiceComponent component=serviceComponentFactory.createNew(service,componentName);
service.addServiceComponent(component);
component.persist();
ServiceComponent sc=service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
Assert.assertTrue(sc.getServiceComponentHosts().isEmpty());
try {
serviceComponentHostFactory.createNew(sc,"h1");
fail("Expected error for invalid host");
}
catch ( Exception e) {
}
addHostToCluster("h1",service.getCluster().getClusterName());
addHostToCluster("h2",service.getCluster().getClusterName());
addHostToCluster("h3",service.getCluster().getClusterName());
HostEntity hostEntity1=hostDAO.findByName("h1");
assertNotNull(hostEntity1);
ServiceComponentHost sch1=serviceComponentHostFactory.createNew(sc,"h1");
ServiceComponentHost sch2=serviceComponentHostFactory.createNew(sc,"h2");
ServiceComponentHost failSch=serviceComponentHostFactory.createNew(sc,"h2");
Map compHosts=new HashMap();
compHosts.put("h1",sch1);
compHosts.put("h2",sch2);
compHosts.put("h3",failSch);
try {
sc.addServiceComponentHosts(compHosts);
fail("Expected error for dups");
}
catch ( Exception e) {
}
Assert.assertTrue(sc.getServiceComponentHosts().isEmpty());
compHosts.remove("h3");
sc.addServiceComponentHosts(compHosts);
Assert.assertEquals(2,sc.getServiceComponentHosts().size());
sch1.persist();
sch2.persist();
ServiceComponentHost schCheck=sc.getServiceComponentHost("h2");
Assert.assertNotNull(schCheck);
Assert.assertEquals("h2",schCheck.getHostName());
ServiceComponentHost sch3=serviceComponentHostFactory.createNew(sc,"h3");
sc.addServiceComponentHost(sch3);
sch3.persist();
Assert.assertNotNull(sc.getServiceComponentHost("h3"));
sch1.setDesiredStackVersion(new StackId("HDP-1.2.0"));
sch1.setState(State.STARTING);
sch1.setStackVersion(new StackId("HDP-1.2.0"));
sch1.setDesiredState(State.STARTED);
HostComponentDesiredStateDAO desiredStateDAO=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentStateDAO liveStateDAO=injector.getInstance(HostComponentStateDAO.class);
HostComponentDesiredStateEntityPK dPK=new HostComponentDesiredStateEntityPK();
dPK.setClusterId(cluster.getClusterId());
dPK.setComponentName(componentName);
dPK.setHostId(hostEntity1.getHostId());
dPK.setServiceName(serviceName);
HostComponentDesiredStateEntity desiredStateEntity=desiredStateDAO.findByPK(dPK);
HostComponentStateEntity stateEntity=liveStateDAO.findByIndex(cluster.getClusterId(),serviceName,componentName,hostEntity1.getHostId());
ServiceComponentHost sch=serviceComponentHostFactory.createExisting(sc,stateEntity,desiredStateEntity);
Assert.assertNotNull(sch);
Assert.assertEquals(State.STARTING,sch.getState());
Assert.assertEquals(State.STARTED,sch.getDesiredState());
Assert.assertEquals("HDP-1.2.0",sch.getStackVersion().getStackId());
Assert.assertEquals("HDP-1.2.0",sch.getDesiredStackVersion().getStackId());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateServiceComponent() throws AmbariException {
String componentName="DATANODE2";
ServiceComponent component=serviceComponentFactory.createNew(service,componentName);
service.addServiceComponent(component);
component.persist();
ServiceComponent sc=service.getServiceComponent(componentName);
Assert.assertNotNull(sc);
Assert.assertEquals(componentName,sc.getName());
Assert.assertEquals(serviceName,sc.getServiceName());
Assert.assertEquals(cluster.getClusterId(),sc.getClusterId());
Assert.assertEquals(cluster.getClusterName(),sc.getClusterName());
Assert.assertEquals(State.INIT,sc.getDesiredState());
Assert.assertFalse(sc.getDesiredStackVersion().getStackId().isEmpty());
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
clusters=injector.getInstance(Clusters.class);
serviceFactory=injector.getInstance(ServiceFactory.class);
serviceComponentFactory=injector.getInstance(ServiceComponentFactory.class);
serviceComponentHostFactory=injector.getInstance(ServiceComponentHostFactory.class);
helper=injector.getInstance(OrmTestHelper.class);
hostDAO=injector.getInstance(HostDAO.class);
metaInfo=injector.getInstance(AmbariMetaInfo.class);
clusterName="foo";
serviceName="HDFS";
StackId stackId=new StackId("HDP-0.1");
clusters.addCluster(clusterName,stackId);
cluster=clusters.getCluster(clusterName);
cluster.setDesiredStackVersion(stackId);
Assert.assertNotNull(cluster);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
s.persist();
service=cluster.getService(serviceName);
Assert.assertNotNull(service);
}
BranchVerifier InternalCallVerifier BooleanVerifier
@Test public void testCanBeRemoved() throws Exception {
String componentName="NAMENODE";
ServiceComponent component=serviceComponentFactory.createNew(service,componentName);
for ( State state : State.values()) {
component.setDesiredState(state);
if (state.isRemovableState()) {
org.junit.Assert.assertTrue(component.canBeRemoved());
}
else {
org.junit.Assert.assertFalse(component.canBeRemoved());
}
}
}
Class: org.apache.ambari.server.state.ServiceInfoTest InternalCallVerifier BooleanVerifier
@Test public void testDuplicateServicePropertyValidationAfterSet(){
ServicePropertyInfo p1=new ServicePropertyInfo();
p1.setName("PROP1");
p1.setValue("V1");
ServicePropertyInfo p2=new ServicePropertyInfo();
p2.setName("PROP1");
p2.setValue("V2");
List servicePropertyList=Lists.newArrayList(p1,p2);
ServiceInfo serviceInfo=new ServiceInfo();
serviceInfo.setName("TEST_NAME");
serviceInfo.setVersion("TEST_VERSION");
serviceInfo.setServicePropertyList(servicePropertyList);
assertFalse("Service info should be in invalid state due to duplicate service property names !",serviceInfo.isValid());
assertTrue("Service info error collection should contain the name of the duplicate service property !",serviceInfo.getErrors().contains("Duplicate service property with name 'PROP1' found in " + serviceInfo.getName() + ":"+ serviceInfo.getVersion()+ " service definition !"));
}
InternalCallVerifier BooleanVerifier
@Test public void testSetRestartRequiredAfterRackChange() throws Exception {
ServiceInfo serviceInfo=new ServiceInfo();
serviceInfo.setRestartRequiredAfterRackChange(true);
assertTrue(serviceInfo.isRestartRequiredAfterRackChange());
serviceInfo.setRestartRequiredAfterRackChange(false);
assertFalse(serviceInfo.isRestartRequiredAfterRackChange());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testDuplicateServicePropertyValidationAfterXmlDeserialization() throws Exception {
String serviceInfoXml="" + " 2.0 " + " "+ " "+ " 1.0 "+ " WITH_DUPLICATE_PROPS "+ " WITH_PROPS "+ " "+ " "+ " PROP1 "+ " VAL1 "+ " "+ " "+ " PROP1 "+ " VAL2 "+ " "+ " "+ " managed "+ " false "+ " "+ " "+ " "+ " "+ " ";
Map serviceInfoMap=getServiceInfo(serviceInfoXml);
ServiceInfo serviceInfo=serviceInfoMap.get("WITH_DUPLICATE_PROPS");
assertFalse("Service info should be in invalid state due to duplicate service property names !",serviceInfo.isValid());
assertTrue("Service info error collection should contain the name of the duplicate service property !",serviceInfo.getErrors().contains("Duplicate service property with name 'PROP1' found in " + serviceInfo.getName() + ":"+ serviceInfo.getVersion()+ " service definition !"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSetServicePropertiesAfterPropertyListSet(){
ServicePropertyInfo p1=new ServicePropertyInfo();
p1.setName("PROP1");
p1.setValue("V1");
ServicePropertyInfo p2=new ServicePropertyInfo();
p2.setName("PROP2");
p2.setValue("V2");
List servicePropertyList=Lists.newArrayList(p1,p2);
ServiceInfo serviceInfo=new ServiceInfo();
serviceInfo.setName("TEST_NAME");
serviceInfo.setVersion("TEST_VERSION");
serviceInfo.setServicePropertyList(servicePropertyList);
Map serviceProperties=serviceInfo.getServiceProperties();
assertTrue(serviceProperties.containsKey("PROP1"));
assertEquals("V1",serviceProperties.get("PROP1"));
assertTrue(serviceProperties.containsKey("PROP2"));
assertEquals("V2",serviceProperties.get("PROP2"));
assertTrue("true".equals(serviceProperties.get(ServiceInfo.DEFAULT_SERVICE_INSTALLABLE_PROPERTY.getKey())));
assertTrue("true".equals(serviceProperties.get(ServiceInfo.DEFAULT_SERVICE_MANAGED_PROPERTY.getKey())));
assertTrue("true".equals(serviceProperties.get(ServiceInfo.DEFAULT_SERVICE_MONITORED_PROPERTY.getKey())));
}
Class: org.apache.ambari.server.state.ServicePropertyInfoTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testValue() throws Exception {
ServicePropertyInfo p=getServiceProperty(XML);
String value=p.getValue();
assertEquals("prop_value",value);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testName() throws Exception {
ServicePropertyInfo p=getServiceProperty(XML);
String name=p.getName();
assertEquals("prop_name",name);
}
Class: org.apache.ambari.server.state.ServiceTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceMaintenance() throws Exception {
String serviceName="HDFS";
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
s.persist();
Service service=cluster.getService(serviceName);
Assert.assertNotNull(service);
ClusterServiceDAO dao=injector.getInstance(ClusterServiceDAO.class);
ClusterServiceEntity entity=dao.findByClusterAndServiceNames(clusterName,serviceName);
Assert.assertNotNull(entity);
Assert.assertEquals(MaintenanceState.OFF,entity.getServiceDesiredStateEntity().getMaintenanceState());
Assert.assertEquals(MaintenanceState.OFF,service.getMaintenanceState());
service.setMaintenanceState(MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.ON,service.getMaintenanceState());
entity=dao.findByClusterAndServiceNames(clusterName,serviceName);
Assert.assertNotNull(entity);
Assert.assertEquals(MaintenanceState.ON,entity.getServiceDesiredStateEntity().getMaintenanceState());
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
clusters=injector.getInstance(Clusters.class);
serviceFactory=injector.getInstance(ServiceFactory.class);
serviceComponentFactory=injector.getInstance(ServiceComponentFactory.class);
metaInfo=injector.getInstance(AmbariMetaInfo.class);
clusterName="foo";
clusters.addCluster(clusterName,new StackId("HDP-0.1"));
cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testCreateService() throws AmbariException {
String serviceName="HDFS";
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
s.persist();
Service service=cluster.getService(serviceName);
Assert.assertNotNull(service);
Assert.assertEquals(serviceName,service.getName());
Assert.assertEquals(cluster.getClusterId(),service.getCluster().getClusterId());
Assert.assertEquals(cluster.getClusterName(),service.getCluster().getClusterName());
Assert.assertEquals(State.INIT,service.getDesiredState());
Assert.assertEquals(SecurityState.UNSECURED,service.getSecurityState());
Assert.assertFalse(service.getDesiredStackVersion().getStackId().isEmpty());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDeleteServiceComponent() throws Exception {
Service hdfs=cluster.addService("HDFS");
Service mapReduce=cluster.addService("MAPREDUCE");
hdfs.persist();
ServiceComponent nameNode=hdfs.addServiceComponent("NAMENODE");
nameNode.persist();
ServiceComponent jobTracker=mapReduce.addServiceComponent("JOBTRACKER");
assertEquals(2,cluster.getServices().size());
assertEquals(1,hdfs.getServiceComponents().size());
assertEquals(1,mapReduce.getServiceComponents().size());
assertTrue(hdfs.isPersisted());
assertFalse(mapReduce.isPersisted());
hdfs.deleteServiceComponent("NAMENODE");
assertEquals(0,hdfs.getServiceComponents().size());
assertEquals(1,mapReduce.getServiceComponents().size());
mapReduce.deleteServiceComponent("JOBTRACKER");
assertEquals(0,hdfs.getServiceComponents().size());
assertEquals(0,mapReduce.getServiceComponents().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetAndSetServiceInfo() throws AmbariException {
String serviceName="HDFS";
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
s.persist();
Service service=cluster.getService(serviceName);
Assert.assertNotNull(service);
service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
Assert.assertEquals("HDP-1.2.0",service.getDesiredStackVersion().getStackId());
service.setDesiredState(State.INSTALLING);
Assert.assertEquals(State.INSTALLING,service.getDesiredState());
}
InternalCallVerifier BooleanVerifier
@Test public void testCanBeRemoved() throws Exception {
Service service=cluster.addService("HDFS");
for ( State state : State.values()) {
service.setDesiredState(state);
org.junit.Assert.assertTrue(service.canBeRemoved());
}
ServiceComponent component=service.addServiceComponent("NAMENODE");
component.setDesiredState(State.INSTALLED);
for ( State state : State.values()) {
service.setDesiredState(state);
org.junit.Assert.assertTrue(service.canBeRemoved());
}
component.setDesiredState(State.STARTED);
for ( State state : State.values()) {
service.setDesiredState(state);
org.junit.Assert.assertFalse(service.canBeRemoved());
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConvertToResponse() throws AmbariException {
String serviceName="HDFS";
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
Service service=cluster.getService(serviceName);
Assert.assertNotNull(service);
ServiceResponse r=s.convertToResponse();
Assert.assertEquals(s.getName(),r.getServiceName());
Assert.assertEquals(s.getCluster().getClusterName(),r.getClusterName());
Assert.assertEquals(s.getDesiredStackVersion().getStackId(),r.getDesiredStackVersion());
Assert.assertEquals(s.getDesiredState().toString(),r.getDesiredState());
service.setDesiredStackVersion(new StackId("HDP-1.2.0"));
service.setDesiredState(State.INSTALLING);
r=s.convertToResponse();
Assert.assertEquals(s.getName(),r.getServiceName());
Assert.assertEquals(s.getCluster().getClusterName(),r.getClusterName());
Assert.assertEquals(s.getDesiredStackVersion().getStackId(),r.getDesiredStackVersion());
Assert.assertEquals(s.getDesiredState().toString(),r.getDesiredState());
StringBuilder sb=new StringBuilder();
s.debugDump(sb);
Assert.assertFalse(sb.toString().isEmpty());
}
UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSecurityState() throws Exception {
String serviceName="HDFS";
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
s.persist();
Service service=cluster.getService(serviceName);
Assert.assertNotNull(service);
ClusterServiceDAO dao=injector.getInstance(ClusterServiceDAO.class);
ClusterServiceEntity entity=dao.findByClusterAndServiceNames(clusterName,serviceName);
Assert.assertNotNull(entity);
Assert.assertEquals(SecurityState.UNSECURED,entity.getServiceDesiredStateEntity().getSecurityState());
Assert.assertEquals(SecurityState.UNSECURED,service.getSecurityState());
service.setSecurityState(SecurityState.SECURED_KERBEROS);
Assert.assertEquals(SecurityState.SECURED_KERBEROS,service.getSecurityState());
entity=dao.findByClusterAndServiceNames(clusterName,serviceName);
Assert.assertNotNull(entity);
Assert.assertEquals(SecurityState.SECURED_KERBEROS,entity.getServiceDesiredStateEntity().getSecurityState());
for ( SecurityState state : SecurityState.ENDPOINT_STATES) {
service.setSecurityState(state);
Assert.assertEquals(state,service.getSecurityState());
}
for ( SecurityState state : SecurityState.TRANSITIONAL_STATES) {
try {
service.setSecurityState(state);
Assert.fail(String.format("SecurityState %s is not a valid desired service state",state.toString()));
}
catch ( AmbariException e) {
}
}
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddAndGetServiceComponents() throws AmbariException {
String serviceName="HDFS";
Service s=serviceFactory.createNew(cluster,serviceName);
cluster.addService(s);
s.persist();
Service service=cluster.getService(serviceName);
Assert.assertNotNull(service);
Assert.assertTrue(s.getServiceComponents().isEmpty());
ServiceComponent sc1=serviceComponentFactory.createNew(s,"NAMENODE");
ServiceComponent sc2=serviceComponentFactory.createNew(s,"DATANODE1");
ServiceComponent sc3=serviceComponentFactory.createNew(s,"DATANODE2");
Map comps=new HashMap();
comps.put(sc1.getName(),sc1);
comps.put(sc2.getName(),sc2);
s.addServiceComponents(comps);
Assert.assertEquals(2,s.getServiceComponents().size());
Assert.assertNotNull(s.getServiceComponent(sc1.getName()));
Assert.assertNotNull(s.getServiceComponent(sc2.getName()));
try {
s.getServiceComponent(sc3.getName());
fail("Expected error when looking for invalid component");
}
catch ( Exception e) {
}
s.addServiceComponent(sc3);
sc1.persist();
sc2.persist();
sc3.persist();
ServiceComponent sc4=s.addServiceComponent("HDFS_CLIENT");
Assert.assertNotNull(s.getServiceComponent(sc4.getName()));
Assert.assertEquals(State.INIT,s.getServiceComponent("HDFS_CLIENT").getDesiredState());
Assert.assertTrue(sc4.isClientComponent());
sc4.persist();
Assert.assertEquals(4,s.getServiceComponents().size());
Assert.assertNotNull(s.getServiceComponent(sc3.getName()));
Assert.assertEquals(sc3.getName(),s.getServiceComponent(sc3.getName()).getName());
Assert.assertEquals(s.getName(),s.getServiceComponent(sc3.getName()).getServiceName());
Assert.assertEquals(cluster.getClusterName(),s.getServiceComponent(sc3.getName()).getClusterName());
sc4.setDesiredState(State.INSTALLING);
Assert.assertEquals(State.INSTALLING,s.getServiceComponent("HDFS_CLIENT").getDesiredState());
}
Class: org.apache.ambari.server.state.UpgradeHelperTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testServiceCheckDowngradeStages() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test_checks"));
UpgradePack upgrade=upgrades.get("upgrade_test_checks");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,DOWNGRADE_VERSION,Direction.DOWNGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(5,groups.size());
UpgradeGroupHolder zookeeperGroup=groups.get(3);
assertEquals("ZOOKEEPER",zookeeperGroup.name);
ManualTask manualTask=(ManualTask)zookeeperGroup.items.get(0).getTasks().get(0).getTasks().get(0);
assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly",manualTask.message);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Verify that a Rolling Upgrades restarts the NameNodes in the following order: standby, active.
* @throws Exception
*/
@Test public void testNamenodeOrder() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
UpgradeGroupHolder mastersGroup=groups.get(2);
assertEquals("CORE_MASTER",mastersGroup.name);
List orderedNameNodes=new LinkedList();
for ( StageWrapper sw : mastersGroup.items) {
if (sw.getType().equals(StageWrapper.Type.RESTART) && sw.getText().toLowerCase().contains("NameNode".toLowerCase())) {
for ( TaskWrapper tw : sw.getTasks()) {
for ( String hostName : tw.getHosts()) {
orderedNameNodes.add(hostName);
}
}
}
}
assertEquals(2,orderedNameNodes.size());
assertEquals("h2",orderedNameNodes.get(0));
assertEquals("h1",orderedNameNodes.get(1));
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test that multiple execute tasks with an annotation of synchronized="true" each run in their own stage.
*/
@Test public void testUpgradeWithMultipleTasksInOwnStage() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
assertTrue(upgrade.getType() == UpgradeType.ROLLING);
List upgradePackGroups=upgrade.getGroups(Direction.UPGRADE);
boolean foundService=false;
for ( Grouping group : upgradePackGroups) {
if (group.title.equals("Oozie")) {
foundService=true;
}
}
assertTrue(foundService);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
int numPrepareStages=0;
for ( UpgradeGroupHolder group : groups) {
if (group.name.equals("OOZIE")) {
assertTrue(group.items.size() > 0);
for ( StageWrapper sw : group.items) {
if (sw.getText().equalsIgnoreCase("Preparing Oozie Server on h2 (Batch 1 of 2)") || sw.getText().equalsIgnoreCase("Preparing Oozie Server on h3 (Batch 2 of 2)")) {
numPrepareStages++;
List taskWrappers=sw.getTasks();
assertEquals(1,taskWrappers.size());
List tasks=taskWrappers.get(0).getTasks();
assertEquals(1,taskWrappers.get(0).getHosts().size());
assertEquals(1,tasks.size());
ExecuteTask task=(ExecuteTask)tasks.get(0);
assertTrue("scripts/oozie_server.py".equalsIgnoreCase(task.script));
assertTrue("stop".equalsIgnoreCase(task.function));
}
if (sw.getText().equalsIgnoreCase("Preparing Oozie Server on h2")) {
numPrepareStages++;
List taskWrappers=sw.getTasks();
assertEquals(1,taskWrappers.size());
List tasks=taskWrappers.get(0).getTasks();
assertEquals(1,taskWrappers.get(0).getHosts().size());
assertEquals(1,tasks.size());
ExecuteTask task=(ExecuteTask)tasks.get(0);
assertTrue("scripts/oozie_server_upgrade.py".equalsIgnoreCase(task.script));
assertTrue("upgrade_oozie_database_and_sharelib".equalsIgnoreCase(task.function));
}
}
}
}
assertEquals(3,numPrepareStages);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDowngradeOrchestration() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,DOWNGRADE_VERSION,Direction.DOWNGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
assertEquals("PRE_CLUSTER",groups.get(0).name);
assertEquals("OOZIE",groups.get(1).name);
assertEquals("HIVE",groups.get(2).name);
assertEquals("CORE_SLAVES",groups.get(3).name);
assertEquals("CORE_MASTER",groups.get(4).name);
assertEquals("ZOOKEEPER",groups.get(5).name);
UpgradeGroupHolder postGroup=groups.get(6);
assertEquals("POST_CLUSTER",postGroup.name);
assertEquals("Finalize Downgrade",postGroup.title);
assertEquals(3,postGroup.items.size());
assertEquals("Confirm Finalize",postGroup.items.get(0).getText());
assertEquals("Execute HDFS Finalize",postGroup.items.get(1).getText());
assertEquals("Save Cluster State",postGroup.items.get(2).getText());
assertEquals(StageWrapper.Type.SERVER_SIDE_ACTION,postGroup.items.get(2).getType());
assertEquals(4,groups.get(0).items.size());
assertEquals(8,groups.get(1).items.size());
assertEquals(3,groups.get(2).items.size());
assertEquals(8,groups.get(3).items.size());
assertEquals(8,groups.get(4).items.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testConfigureTaskWithMultipleConfigurations() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
ConfigUpgradePack cup=ambariMetaInfo.getConfigUpgradePack("HDP","2.1.1");
assertNotNull(upgrade);
Cluster cluster=makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
UpgradeGroupHolder hiveGroup=groups.get(4);
assertEquals("HIVE",hiveGroup.name);
ConfigureTask configureTask=(ConfigureTask)hiveGroup.items.get(2).getTasks().get(0).getTasks().get(0);
Map configProperties=configureTask.getConfigurationChanges(cluster,cup);
assertFalse(configProperties.isEmpty());
assertEquals(configProperties.get(ConfigureTask.PARAMETER_CONFIG_TYPE),"hive-site");
String configurationJson=configProperties.get(ConfigureTask.PARAMETER_KEY_VALUE_PAIRS);
String transferJson=configProperties.get(ConfigureTask.PARAMETER_TRANSFERS);
assertNotNull(configurationJson);
assertNotNull(transferJson);
List keyValuePairs=m_gson.fromJson(configurationJson,new TypeToken>(){
}
.getType());
List transfers=m_gson.fromJson(transferJson,new TypeToken>(){
}
.getType());
assertEquals("fooKey",keyValuePairs.get(0).key);
assertEquals("fooValue",keyValuePairs.get(0).value);
assertEquals("fooKey2",keyValuePairs.get(1).key);
assertEquals("fooValue2",keyValuePairs.get(1).value);
assertEquals("fooKey3",keyValuePairs.get(2).key);
assertEquals("fooValue3",keyValuePairs.get(2).value);
assertEquals("copy-key",transfers.get(0).fromKey);
assertEquals("copy-key-to",transfers.get(0).toKey);
assertEquals("move-key",transfers.get(1).fromKey);
assertEquals("move-key-to",transfers.get(1).toKey);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testUpgradeServerActionOrchestration() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
ServiceInfo si=ambariMetaInfo.getService("HDP","2.1.1","ZOOKEEPER");
si.setDisplayName("Zk");
ComponentInfo ci=si.getComponentByName("ZOOKEEPER_SERVER");
ci.setDisplayName("ZooKeeper1 Server2");
assertTrue(upgrades.containsKey("upgrade_server_action_test"));
UpgradePack upgrade=upgrades.get("upgrade_server_action_test");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(1,groups.size());
UpgradeGroupHolder group=groups.get(0);
assertEquals("CLUSTER_SERVER_ACTIONS",group.name);
List stageWrappers=group.items;
assertEquals(6,stageWrappers.size());
assertEquals("Pre Upgrade",stageWrappers.get(0).getText());
assertEquals("Pre Upgrade Zookeeper",stageWrappers.get(1).getText());
assertEquals("Configuring",stageWrappers.get(2).getText());
assertEquals("Configuring HDFS",stageWrappers.get(3).getText());
assertEquals("Calculating Properties",stageWrappers.get(4).getText());
assertEquals("Calculating HDFS Properties",stageWrappers.get(5).getText());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testDowngradeAfterPartialUpgrade() throws Exception {
Clusters clusters=injector.getInstance(Clusters.class);
ServiceFactory serviceFactory=injector.getInstance(ServiceFactory.class);
String clusterName="c1";
StackId stackId=new StackId("HDP-2.1.1");
clusters.addCluster(clusterName,stackId);
Cluster c=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,c.getDesiredStackVersion().getStackVersion());
c.createClusterVersion(stackId,c.getDesiredStackVersion().getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
for (int i=0; i < 2; i++) {
String hostName="h" + (i + 1);
clusters.addHost(hostName);
Host host=clusters.getHost(hostName);
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","6");
host.setHostAttributes(hostAttributes);
host.persist();
clusters.mapHostToCluster(hostName,clusterName);
}
c.addService(serviceFactory.createNew(c,"HDFS"));
Service s=c.getService("HDFS");
ServiceComponent sc=s.addServiceComponent("NAMENODE");
sc.addServiceComponentHost("h1");
sc.addServiceComponentHost("h2");
List schs=c.getServiceComponentHosts("HDFS","NAMENODE");
assertEquals(2,schs.size());
HostsType type=new HostsType();
type.master="h1";
type.secondary="h2";
expect(m_masterHostResolver.getMasterAndHosts("ZOOKEEPER","ZOOKEEPER_SERVER")).andReturn(null).anyTimes();
expect(m_masterHostResolver.getMasterAndHosts("HDFS","NAMENODE")).andReturn(type).anyTimes();
expect(m_masterHostResolver.getCluster()).andReturn(c).anyTimes();
replay(m_masterHostResolver);
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,DOWNGRADE_VERSION,Direction.DOWNGRADE,UpgradeType.ROLLING);
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_direction"));
UpgradePack upgrade=upgrades.get("upgrade_direction");
assertNotNull(upgrade);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(2,groups.size());
UpgradeGroupHolder group=groups.get(0);
assertEquals(1,group.items.size());
assertEquals("PRE_POST_CLUSTER",group.name);
group=groups.get(1);
assertEquals("POST_CLUSTER",group.name);
assertEquals(3,group.items.size());
StageWrapper stage=group.items.get(1);
assertEquals("NameNode Finalize",stage.getText());
assertEquals(1,stage.getTasks().size());
TaskWrapper task=stage.getTasks().get(0);
assertEquals(1,task.getHosts().size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testManualTaskPostProcessing() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
UpgradeGroupHolder zookeeperGroup=groups.get(1);
assertEquals("ZOOKEEPER",zookeeperGroup.name);
ManualTask manualTask=(ManualTask)zookeeperGroup.items.get(0).getTasks().get(0).getTasks().get(0);
assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly",manualTask.message);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testConditionalDeleteTask() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
ConfigUpgradePack cup=ambariMetaInfo.getConfigUpgradePack("HDP","2.1.1");
assertNotNull(upgrade);
Cluster cluster=makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
UpgradeGroupHolder hiveGroup=groups.get(4);
assertEquals("HIVE",hiveGroup.name);
ConfigureTask configureTask=(ConfigureTask)hiveGroup.items.get(2).getTasks().get(0).getTasks().get(0);
Map hiveConfigs=new HashMap();
hiveConfigs.put("hive.server2.transport.mode","http");
hiveConfigs.put("hive.server2.thrift.port","10001");
hiveConfigs.put("condition","1");
ConfigurationRequest configurationRequest=new ConfigurationRequest();
configurationRequest.setClusterName(cluster.getClusterName());
configurationRequest.setType("hive-site");
configurationRequest.setVersionTag("version2");
configurationRequest.setProperties(hiveConfigs);
final ClusterRequest clusterRequest=new ClusterRequest(cluster.getClusterId(),cluster.getClusterName(),cluster.getDesiredStackVersion().getStackVersion(),null);
clusterRequest.setDesiredConfig(Collections.singletonList(configurationRequest));
m_managementController.updateClusters(new HashSet(){
{
add(clusterRequest);
}
}
,null);
Map configProperties=configureTask.getConfigurationChanges(cluster,cup);
assertFalse(configProperties.isEmpty());
assertEquals(configProperties.get(ConfigureTask.PARAMETER_CONFIG_TYPE),"hive-site");
String configurationJson=configProperties.get(ConfigureTask.PARAMETER_TRANSFERS);
assertNotNull(configurationJson);
List transfers=m_gson.fromJson(configurationJson,new TypeToken>(){
}
.getType());
assertEquals(10,transfers.size());
assertEquals("copy-key",transfers.get(0).fromKey);
assertEquals("copy-key-to",transfers.get(0).toKey);
assertEquals("move-key",transfers.get(1).fromKey);
assertEquals("move-key-to",transfers.get(1).toKey);
assertEquals("delete-key",transfers.get(2).deleteKey);
assertEquals("delete-http",transfers.get(3).deleteKey);
assertEquals("delete-null-if-value",transfers.get(4).deleteKey);
assertEquals("delete-blank-if-key",transfers.get(5).deleteKey);
assertEquals("delete-blank-if-type",transfers.get(6).deleteKey);
assertEquals("delete-thrift",transfers.get(7).deleteKey);
assertEquals("delete-if-key-present",transfers.get(8).deleteKey);
assertEquals("delete-if-key-absent",transfers.get(9).deleteKey);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testUpgradeOrchestration() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("foo","bar");
assertTrue(upgrades.isEmpty());
upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
ServiceInfo si=ambariMetaInfo.getService("HDP","2.1.1","ZOOKEEPER");
si.setDisplayName("Zk");
ComponentInfo ci=si.getComponentByName("ZOOKEEPER_SERVER");
ci.setDisplayName("ZooKeeper1 Server2");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
assertEquals("PRE_CLUSTER",groups.get(0).name);
assertEquals("ZOOKEEPER",groups.get(1).name);
assertEquals("CORE_MASTER",groups.get(2).name);
assertEquals("CORE_SLAVES",groups.get(3).name);
assertEquals("HIVE",groups.get(4).name);
assertEquals("OOZIE",groups.get(5).name);
UpgradeGroupHolder holder=groups.get(2);
boolean found=false;
for ( StageWrapper sw : holder.items) {
if (sw.getTasksJson().contains("Upgrading your database")) {
found=true;
}
}
assertTrue("Expected to find replaced text for Upgrading",found);
UpgradeGroupHolder group=groups.get(1);
assertTrue(group.items.get(1).getText().contains("ZooKeeper1 Server2"));
assertEquals(group.items.get(5).getText(),"Service Check Zk");
group=groups.get(3);
assertEquals(8,group.items.size());
StageWrapper sw=group.items.get(3);
assertEquals("Validate Partial Upgrade",sw.getText());
assertEquals(1,sw.getTasks().size());
assertEquals(1,sw.getTasks().get(0).getTasks().size());
Task t=sw.getTasks().get(0).getTasks().get(0);
assertEquals(ManualTask.class,t.getClass());
ManualTask mt=(ManualTask)t;
assertTrue(mt.message.contains("DataNode and NodeManager"));
assertNotNull(mt.structuredOut);
assertTrue(mt.structuredOut.contains("DATANODE"));
assertTrue(mt.structuredOut.contains("NODEMANAGER"));
UpgradeGroupHolder postGroup=groups.get(6);
assertEquals("POST_CLUSTER",postGroup.name);
assertEquals("Finalize Upgrade",postGroup.title);
assertEquals(3,postGroup.items.size());
assertEquals("Confirm Finalize",postGroup.items.get(0).getText());
assertEquals("Execute HDFS Finalize",postGroup.items.get(1).getText());
assertEquals("Save Cluster State",postGroup.items.get(2).getText());
assertEquals(StageWrapper.Type.SERVER_SIDE_ACTION,postGroup.items.get(2).getType());
assertEquals(4,groups.get(0).items.size());
assertEquals(6,groups.get(1).items.size());
assertEquals(9,groups.get(2).items.size());
assertEquals(8,groups.get(3).items.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSuggestUpgradePack() throws Exception {
final String clusterName="c1";
final String upgradeFromVersion="2.1.1";
final String upgradeToVersion="2.2.0";
final Direction upgradeDirection=Direction.UPGRADE;
final UpgradeType upgradeType=UpgradeType.ROLLING;
makeCluster();
try {
String preferredUpgradePackName="upgrade_test";
UpgradePack up=m_upgradeHelper.suggestUpgradePack(clusterName,upgradeFromVersion,upgradeToVersion,upgradeDirection,upgradeType,preferredUpgradePackName);
assertEquals(upgradeType,up.getType());
}
catch ( AmbariException e) {
assertTrue(false);
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that hosts in MM are not included in the upgrade.
* @throws Exception
*/
@Test public void testUpgradeOrchestrationWithHostsInMM() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("foo","bar");
assertTrue(upgrades.isEmpty());
upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
ServiceInfo si=ambariMetaInfo.getService("HDP","2.1.1","ZOOKEEPER");
si.setDisplayName("Zk");
ComponentInfo ci=si.getComponentByName("ZOOKEEPER_SERVER");
ci.setDisplayName("ZooKeeper1 Server2");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
Cluster cluster=makeCluster();
Host hostInMaintenanceMode=cluster.getHosts().iterator().next();
hostInMaintenanceMode.setMaintenanceState(cluster.getClusterId(),MaintenanceState.ON);
MasterHostResolver masterHostResolver=new MasterHostResolver(null,cluster,"");
UpgradeContext context=new UpgradeContext(masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
for ( UpgradeGroupHolder group : groups) {
for ( StageWrapper stageWrapper : group.items) {
Set hosts=stageWrapper.getHosts();
assertFalse(hosts.contains(hostInMaintenanceMode.getHostName()));
}
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testUpgradeOrchestrationFullTask() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
ServiceInfo si=ambariMetaInfo.getService("HDP","2.1.1","ZOOKEEPER");
si.setDisplayName("Zk");
ComponentInfo ci=si.getComponentByName("ZOOKEEPER_SERVER");
ci.setDisplayName("ZooKeeper1 Server2");
assertTrue(upgrades.containsKey("upgrade_to_new_stack"));
UpgradePack upgrade=upgrades.get("upgrade_to_new_stack");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(6,groups.size());
assertEquals("PRE_CLUSTER",groups.get(0).name);
assertEquals("ZOOKEEPER",groups.get(1).name);
assertEquals("CORE_MASTER",groups.get(2).name);
assertEquals("CORE_SLAVES",groups.get(3).name);
assertEquals("HIVE",groups.get(4).name);
UpgradeGroupHolder holder=groups.get(2);
boolean found=false;
for ( StageWrapper sw : holder.items) {
if (sw.getTasksJson().contains("Upgrading your database")) {
found=true;
}
}
assertTrue("Expected to find replaced text for Upgrading",found);
UpgradeGroupHolder group=groups.get(1);
assertTrue(group.items.get(1).getText().contains("ZooKeeper1 Server2"));
assertEquals(group.items.get(4).getText(),"Service Check Zk");
group=groups.get(3);
assertEquals(8,group.items.size());
StageWrapper sw=group.items.get(3);
assertEquals("Validate Partial Upgrade",sw.getText());
assertEquals(1,sw.getTasks().size());
assertEquals(1,sw.getTasks().get(0).getTasks().size());
Task t=sw.getTasks().get(0).getTasks().get(0);
assertEquals(ManualTask.class,t.getClass());
ManualTask mt=(ManualTask)t;
assertTrue(mt.message.contains("DataNode and NodeManager"));
assertNotNull(mt.structuredOut);
assertTrue(mt.structuredOut.contains("DATANODE"));
assertTrue(mt.structuredOut.contains("NODEMANAGER"));
UpgradeGroupHolder postGroup=groups.get(5);
assertEquals(postGroup.name,"POST_CLUSTER");
assertEquals(postGroup.title,"Finalize Upgrade");
assertEquals(4,postGroup.items.size());
assertEquals("Confirm Finalize",postGroup.items.get(0).getText());
assertEquals("Execute HDFS Finalize",postGroup.items.get(1).getText());
assertEquals("Save Cluster State",postGroup.items.get(2).getText());
assertEquals(StageWrapper.Type.SERVER_SIDE_ACTION,postGroup.items.get(2).getType());
assertEquals("Run On All 2.2.1.0-1234",postGroup.items.get(3).getText());
assertEquals(1,postGroup.items.get(3).getTasks().size());
Set hosts=postGroup.items.get(3).getTasks().get(0).getHosts();
assertNotNull(hosts);
assertEquals(4,hosts.size());
assertEquals(4,groups.get(0).items.size());
assertEquals(5,groups.get(1).items.size());
assertEquals(9,groups.get(2).items.size());
assertEquals(8,groups.get(3).items.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testConfigureTask() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
ConfigUpgradePack cup=ambariMetaInfo.getConfigUpgradePack("HDP","2.1.1");
assertNotNull(upgrade);
Cluster cluster=makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
UpgradeGroupHolder hiveGroup=groups.get(4);
assertEquals("HIVE",hiveGroup.name);
ConfigureTask configureTask=(ConfigureTask)hiveGroup.items.get(1).getTasks().get(0).getTasks().get(0);
Map configProperties=configureTask.getConfigurationChanges(cluster,cup);
assertFalse(configProperties.isEmpty());
assertEquals(configProperties.get(ConfigureTask.PARAMETER_CONFIG_TYPE),"hive-site");
String configurationJson=configProperties.get(ConfigureTask.PARAMETER_KEY_VALUE_PAIRS);
assertNotNull(configurationJson);
List keyValuePairs=m_gson.fromJson(configurationJson,new TypeToken>(){
}
.getType());
assertEquals("hive.server2.thrift.port",keyValuePairs.get(0).key);
assertEquals("10010",keyValuePairs.get(0).value);
Map hiveConfigs=new HashMap();
hiveConfigs.put("hive.server2.transport.mode","http");
hiveConfigs.put("hive.server2.thrift.port","10001");
ConfigurationRequest configurationRequest=new ConfigurationRequest();
configurationRequest.setClusterName(cluster.getClusterName());
configurationRequest.setType("hive-site");
configurationRequest.setVersionTag("version2");
configurationRequest.setProperties(hiveConfigs);
final ClusterRequest clusterRequest=new ClusterRequest(cluster.getClusterId(),cluster.getClusterName(),cluster.getDesiredStackVersion().getStackVersion(),null);
clusterRequest.setDesiredConfig(Collections.singletonList(configurationRequest));
m_managementController.updateClusters(new HashSet(){
{
add(clusterRequest);
}
}
,null);
configProperties=configureTask.getConfigurationChanges(cluster,cup);
assertFalse(configProperties.isEmpty());
assertEquals(configProperties.get(ConfigureTask.PARAMETER_CONFIG_TYPE),"hive-site");
configurationJson=configProperties.get(ConfigureTask.PARAMETER_KEY_VALUE_PAIRS);
assertNotNull(configurationJson);
keyValuePairs=m_gson.fromJson(configurationJson,new TypeToken>(){
}
.getType());
assertEquals("hive.server2.http.port",keyValuePairs.get(0).key);
assertEquals("10011",keyValuePairs.get(0).value);
}
InternalCallVerifier EqualityVerifier
@Test public void testResolverWithFailedUpgrade() throws Exception {
Clusters clusters=injector.getInstance(Clusters.class);
ServiceFactory serviceFactory=injector.getInstance(ServiceFactory.class);
String clusterName="c1";
StackId stackId=new StackId("HDP-2.1.1");
clusters.addCluster(clusterName,stackId);
Cluster c=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,c.getDesiredStackVersion().getStackVersion());
c.createClusterVersion(stackId,c.getDesiredStackVersion().getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
for (int i=0; i < 2; i++) {
String hostName="h" + (i + 1);
clusters.addHost(hostName);
Host host=clusters.getHost(hostName);
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","6");
host.setHostAttributes(hostAttributes);
host.persist();
clusters.mapHostToCluster(hostName,clusterName);
}
c.addService(serviceFactory.createNew(c,"ZOOKEEPER"));
Service s=c.getService("ZOOKEEPER");
ServiceComponent sc=s.addServiceComponent("ZOOKEEPER_SERVER");
ServiceComponentHost sch1=sc.addServiceComponentHost("h1");
sch1.setVersion("2.1.1.0-1234");
ServiceComponentHost sch2=sc.addServiceComponentHost("h2");
sch2.setVersion("2.1.1.0-1234");
List schs=c.getServiceComponentHosts("ZOOKEEPER","ZOOKEEPER_SERVER");
assertEquals(2,schs.size());
MasterHostResolver mhr=new MasterHostResolver(null,c,"2.1.1.0-1234");
HostsType ht=mhr.getMasterAndHosts("ZOOKEEPER","ZOOKEEPER_SERVER");
assertEquals(0,ht.hosts.size());
sch2.setUpgradeState(UpgradeState.FAILED);
ht=mhr.getMasterAndHosts("ZOOKEEPER","ZOOKEEPER_SERVER");
assertEquals(1,ht.hosts.size());
assertEquals("h2",ht.hosts.iterator().next());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpgradeOrchestrationWithNoHeartbeat() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("foo","bar");
assertTrue(upgrades.isEmpty());
upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertNotNull(upgrade);
Cluster cluster=makeCluster(false);
Clusters clusters=injector.getInstance(Clusters.class);
Host h4=clusters.getHost("h4");
h4.setState(HostState.HEARTBEAT_LOST);
h4.persist();
List schs=cluster.getServiceComponentHosts("h4");
assertEquals(1,schs.size());
assertEquals(HostState.HEARTBEAT_LOST,schs.get(0).getHostState());
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
assertEquals("PRE_CLUSTER",groups.get(0).name);
assertEquals("ZOOKEEPER",groups.get(1).name);
assertEquals("CORE_MASTER",groups.get(2).name);
assertEquals("CORE_SLAVES",groups.get(3).name);
assertEquals("HIVE",groups.get(4).name);
assertEquals("OOZIE",groups.get(5).name);
UpgradeGroupHolder postGroup=groups.get(6);
assertEquals("POST_CLUSTER",postGroup.name);
assertEquals("Finalize Upgrade",postGroup.title);
assertEquals(3,postGroup.items.size());
assertEquals("Confirm Finalize",postGroup.items.get(0).getText());
assertEquals("Execute HDFS Finalize",postGroup.items.get(1).getText());
assertEquals("Save Cluster State",postGroup.items.get(2).getText());
assertEquals(StageWrapper.Type.SERVER_SIDE_ACTION,postGroup.items.get(2).getType());
assertEquals(6,groups.get(1).items.size());
assertEquals(9,groups.get(2).items.size());
assertEquals(7,groups.get(3).items.size());
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testServiceCheckUpgradeStages() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.2.0");
assertTrue(upgrades.containsKey("upgrade_test_checks"));
UpgradePack upgrade=upgrades.get("upgrade_test_checks");
assertNotNull(upgrade);
Cluster c=makeCluster();
Set additionalServices=new HashSet(){
{
add("HBASE");
add("PIG");
add("TEZ");
add("AMBARI_METRICS");
}
}
;
for ( String service : additionalServices) {
c.addService(service);
}
int numServiceChecksExpected=0;
Collection services=c.getServices().values();
for ( Service service : services) {
ServiceInfo si=ambariMetaInfo.getService(c.getCurrentStackVersion().getStackName(),c.getCurrentStackVersion().getStackVersion(),service.getName());
if (null == si.getCommandScript()) {
continue;
}
if (service.getName().equalsIgnoreCase("TEZ")) {
assertTrue("Expect Tez to not have any service checks",false);
}
if (service.getName().equalsIgnoreCase("AMBARI_METRICS")) {
continue;
}
numServiceChecksExpected++;
}
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_22,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(7,groups.size());
UpgradeGroupHolder holder=groups.get(3);
assertEquals(holder.name,"SERVICE_CHECK_1");
assertEquals(7,holder.items.size());
int numServiceChecksActual=0;
for ( StageWrapper sw : holder.items) {
for ( Service service : services) {
Pattern p=Pattern.compile(".*" + service.getName(),Pattern.CASE_INSENSITIVE);
Matcher matcher=p.matcher(sw.getText());
if (matcher.matches()) {
numServiceChecksActual++;
continue;
}
}
}
assertEquals(numServiceChecksActual,numServiceChecksExpected);
UpgradeGroupHolder zookeeperGroup=groups.get(1);
assertEquals("ZOOKEEPER",zookeeperGroup.name);
ManualTask manualTask=(ManualTask)zookeeperGroup.items.get(0).getTasks().get(0).getTasks().get(0);
assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly",manualTask.message);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testBuckets() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.containsKey("upgrade_bucket_test"));
UpgradePack upgrade=upgrades.get("upgrade_bucket_test");
assertNotNull(upgrade);
makeCluster();
UpgradeContext context=new UpgradeContext(m_masterHostResolver,HDP_21,HDP_21,UPGRADE_VERSION,Direction.UPGRADE,UpgradeType.ROLLING);
List groups=m_upgradeHelper.createSequence(upgrade,context);
assertEquals(1,groups.size());
UpgradeGroupHolder group=groups.iterator().next();
assertEquals(22,group.items.size());
}
Class: org.apache.ambari.server.state.action.JobTest InternalCallVerifier EqualityVerifier
@Test public void reInitCompletedJob() throws Exception {
Action job=getCompletedJob(1,"JobNameFoo",1,false);
ActionId jId=new ActionId(2,new ActionType("JobNameFoo"));
ActionInitEvent e=new ActionInitEvent(jId,100);
job.handleEvent(e);
Assert.assertEquals(ActionState.INIT,job.getState());
Assert.assertEquals(100,job.getStartTime());
Assert.assertEquals(-1,job.getLastUpdateTime());
Assert.assertEquals(-1,job.getCompletionTime());
Assert.assertEquals(2,job.getId().actionId);
}
Class: org.apache.ambari.server.state.alerts.AggregateAlertListenerTest InternalCallVerifier EqualityVerifier
/**
* Tests that the {@link AlertAggregateListener} caches values of the
* aggregates and only triggers events when needed.
* @throws Exception
*/
@Test public void testAlertNoticeCreationFromEvent() throws Exception {
AlertCurrentEntity currentEntityMock=EasyMock.createNiceMock(AlertCurrentEntity.class);
AlertDefinition aggregateDefinition=new AlertDefinition();
aggregateDefinition.setName("mock-aggregate-alert");
AggregateSource aggregateSource=new AggregateSource();
aggregateSource.setAlertName("mock-aggregate-alert");
Reporting reporting=new Reporting();
ReportTemplate criticalTemplate=new ReportTemplate();
ReportTemplate okTemplate=new ReportTemplate();
criticalTemplate.setValue(.05);
criticalTemplate.setText("CRITICAL");
okTemplate.setText("OK");
reporting.setCritical(criticalTemplate);
reporting.setWarning(criticalTemplate);
reporting.setOk(okTemplate);
aggregateSource.setReporting(reporting);
aggregateDefinition.setSource(aggregateSource);
EasyMock.expect(m_aggregateMapping.getAggregateDefinition(EasyMock.anyLong(),EasyMock.eq("mock-alert"))).andReturn(aggregateDefinition).atLeastOnce();
AlertSummaryDTO summaryDTO=new AlertSummaryDTO(5,0,0,0,0);
EasyMock.expect(m_alertsDao.findAggregateCounts(EasyMock.anyLong(),EasyMock.eq("mock-aggregate-alert"))).andReturn(summaryDTO).atLeastOnce();
EasyMock.replay(m_alertsDao,m_aggregateMapping);
Assert.assertEquals(0,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
Alert alert=new Alert("mock-alert",null,null,null,null,null);
AlertAggregateListener aggregateListener=m_injector.getInstance(AlertAggregateListener.class);
AlertStateChangeEvent event=new AlertStateChangeEvent(0,alert,currentEntityMock,null);
aggregateListener.onAlertStateChangeEvent(event);
Assert.assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
aggregateListener.onAlertStateChangeEvent(event);
Assert.assertEquals(1,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
summaryDTO.setOkCount(0);
summaryDTO.setCriticalCount(5);
aggregateListener.onAlertStateChangeEvent(event);
Assert.assertEquals(2,m_listener.getAlertEventReceivedCount(AlertReceivedEvent.class));
}
Class: org.apache.ambari.server.state.alerts.AlertDefinitionEqualityTest InternalCallVerifier BooleanVerifier
@Test public void testAlertDefinitionEquality(){
AlertDefinition ad1=getAlertDefinition(SourceType.PORT);
AlertDefinition ad2=getAlertDefinition(SourceType.PORT);
assertTrue(ad1.equals(ad2));
assertTrue(ad1.deeplyEquals(ad2));
ad2.setInterval(2);
assertTrue(ad1.equals(ad2));
assertFalse(ad1.deeplyEquals(ad2));
ad2.setName(getName() + " foo");
assertFalse(ad1.equals(ad2));
assertFalse(ad1.deeplyEquals(ad2));
ad2=getAlertDefinition(SourceType.AGGREGATE);
assertFalse(ad1.deeplyEquals(ad2));
ad2=getAlertDefinition(SourceType.PORT);
assertTrue(ad1.deeplyEquals(ad2));
ad2.getSource().getReporting().getOk().setText("foo");
assertFalse(ad1.deeplyEquals(ad2));
}
Class: org.apache.ambari.server.state.alerts.AlertDefinitionHashTest InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test method for {@link org.apache.ambari.server.state.alert.AlertDefinitionHash#getHash(java.lang.String,java.lang.String)}.
*/
@Test public void testGetHash(){
String hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
assertNotSame(AlertDefinitionHash.NULL_MD5_HASH,hash);
assertEquals(hash,m_hash.getHash(CLUSTERNAME,HOSTNAME));
}
InternalCallVerifier EqualityVerifier
@Test public void testActionQueueInvalidation() throws Exception {
ActionQueue actionQueue=m_injector.getInstance(ActionQueue.class);
AlertDefinitionCommand definitionCommand1=new AlertDefinitionCommand(CLUSTERNAME,HOSTNAME,"12345",null);
AlertDefinitionCommand definitionCommand2=new AlertDefinitionCommand(CLUSTERNAME,"anotherHost","67890",null);
AlertExecutionCommand executionCommand=new AlertExecutionCommand(CLUSTERNAME,HOSTNAME,null);
actionQueue.enqueue(HOSTNAME,definitionCommand1);
actionQueue.enqueue(HOSTNAME,executionCommand);
actionQueue.enqueue("anotherHost",definitionCommand2);
assertEquals(2,actionQueue.size(HOSTNAME));
assertEquals(1,actionQueue.size("anotherHost"));
Set hosts=new HashSet();
hosts.add(HOSTNAME);
m_hash.enqueueAgentCommands(1L,hosts);
assertEquals(1,actionQueue.size(HOSTNAME));
assertEquals(1,actionQueue.size("anotherHost"));
}
InternalCallVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test {@link AlertDefinitionHash#invalidateAll()}.
*/
@Test public void testInvalidateAll(){
String hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
m_hash.invalidateAll();
String newHash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertEquals(hash,newHash);
m_hash.invalidateAll();
AlertDefinitionEntity agentScoped=new AlertDefinitionEntity();
agentScoped.setDefinitionId(System.currentTimeMillis());
agentScoped.setClusterId(1L);
agentScoped.setHash(UUID.randomUUID().toString());
agentScoped.setServiceName("AMBARI");
agentScoped.setComponentName("AMBARI_AGENT");
agentScoped.setScope(Scope.HOST);
agentScoped.setScheduleInterval(1);
m_agentDefinitions.add(agentScoped);
newHash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotSame(hash,newHash);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
/**
* Test {@link AlertDefinitionHash#isHashCached(String)}.
*/
@Test public void testIsHashCached(){
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
String hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
assertTrue(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
m_hash.invalidate(HOSTNAME);
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
assertTrue(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
m_hash.invalidateAll();
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
assertTrue(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Test {@link AlertDefinitionHash#invalidateHosts(AlertDefinitionEntity)}.
*/
@Test public void testInvalidateHosts(){
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
String hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
assertTrue(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
Set invalidatedHosts=m_hash.invalidateHosts(m_hdfsHost);
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
assertNotNull(invalidatedHosts);
assertEquals(1,invalidatedHosts.size());
assertTrue(invalidatedHosts.contains(HOSTNAME));
}
InternalCallVerifier EqualityVerifier
@Test public void testAggregateIgnored(){
Set associatedHosts=m_hash.getAssociatedHosts(m_mockCluster,SourceType.AGGREGATE,"definitionName","HDFS",null);
assertEquals(0,associatedHosts.size());
associatedHosts=m_hash.getAssociatedHosts(m_mockCluster,SourceType.PORT,"definitionName","HDFS",null);
assertEquals(1,associatedHosts.size());
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
/**
*/
@Test public void testInvalidateHost(){
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
assertFalse(m_hash.isHashCached("foo",HOSTNAME));
String hash=m_hash.getHash(CLUSTERNAME,HOSTNAME);
assertNotNull(hash);
assertTrue(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
assertFalse(m_hash.isHashCached("foo",HOSTNAME));
m_hash.invalidate("foo",HOSTNAME);
assertTrue(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
assertFalse(m_hash.isHashCached("foo",HOSTNAME));
m_hash.invalidateAll();
assertFalse(m_hash.isHashCached(CLUSTERNAME,HOSTNAME));
assertFalse(m_hash.isHashCached("foo",HOSTNAME));
}
InternalCallVerifier EqualityVerifier
/**
* Test method for {@link org.apache.ambari.server.state.alert.AlertDefinitionHash#getAlertDefinitions(java.lang.String,java.lang.String)}.
*/
@Test public void testGetAlertDefinitions(){
List definitions=m_hash.getAlertDefinitions(CLUSTERNAME,HOSTNAME);
assertEquals(3,definitions.size());
}
Class: org.apache.ambari.server.state.alerts.AlertEventPublisherTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAlertDefinitionNameChangeEvent() throws Exception {
installHdfsService();
AlertDefinitionEntity definition=definitionDao.findAll().get(0);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(cluster.getClusterId());
history.setAlertDefinition(definition);
history.setAlertLabel(definition.getLabel());
history.setAlertText(definition.getDefinitionName());
history.setAlertTimestamp(Long.valueOf(1L));
history.setHostName(null);
history.setAlertState(AlertState.OK);
alertsDao.create(history);
AlertHistoryEntity history2=new AlertHistoryEntity();
history2.setServiceName(definition.getServiceName());
history2.setClusterId(cluster.getClusterId());
history2.setAlertDefinition(definition);
history2.setAlertLabel(definition.getLabel());
history2.setAlertText(definition.getDefinitionName());
history2.setAlertTimestamp(Long.valueOf(1L));
history2.setHostName(null);
history2.setAlertState(AlertState.CRITICAL);
AlertCurrentEntity current=new AlertCurrentEntity();
current.setOriginalTimestamp(1L);
current.setLatestTimestamp(2L);
current.setAlertHistory(history2);
alertsDao.create(current);
definition.setLabel("testAlertDefinitionNameChangeEvent");
definitionDao.merge(definition);
history=alertsDao.findById(history.getAlertId());
history2=alertsDao.findById(history2.getAlertId());
Assert.assertFalse(definition.getLabel().equals(history.getAlertLabel()));
Assert.assertEquals(definition.getLabel(),history2.getAlertLabel());
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
/**
*/
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
EventBusSynchronizer.synchronizeAmbariEventPublisher(injector);
dispatchDao=injector.getInstance(AlertDispatchDAO.class);
definitionDao=injector.getInstance(AlertDefinitionDAO.class);
alertsDao=injector.getInstance(AlertsDAO.class);
clusters=injector.getInstance(Clusters.class);
serviceFactory=injector.getInstance(ServiceFactory.class);
ormHelper=injector.getInstance(OrmTestHelper.class);
aggregateMapping=injector.getInstance(AggregateDefinitionMapping.class);
clusterName="foo";
clusters.addCluster(clusterName,new StackId("HDP","2.0.6"));
cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that {@link AlertDefinitionDeleteEvent} instances are fired when a
* definition is removed.
* @throws Exception
*/
@Test public void testAlertDefinitionRemoval() throws Exception {
Assert.assertEquals(0,definitionDao.findAll().size());
AlertDefinitionEntity definition=ormHelper.createAlertDefinition(1L);
Assert.assertEquals(1,definitionDao.findAll().size());
AggregateSource source=new AggregateSource();
source.setAlertName(definition.getDefinitionName());
AlertDefinition aggregate=new AlertDefinition();
aggregate.setClusterId(1L);
aggregate.setComponentName("DATANODE");
aggregate.setEnabled(true);
aggregate.setInterval(1);
aggregate.setLabel("DataNode Aggregate");
aggregate.setName("datanode_aggregate");
aggregate.setScope(Scope.ANY);
aggregate.setServiceName("HDFS");
aggregate.setSource(source);
aggregate.setUuid("uuid");
aggregateMapping.registerAggregate(1L,aggregate);
Assert.assertNotNull(aggregateMapping.getAggregateDefinition(1L,source.getAlertName()));
definitionDao.remove(definition);
Assert.assertNull(aggregateMapping.getAggregateDefinition(1L,source.getAlertName()));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that {@link AlertDefinitionChangedEvent} instances are fired when a
* definition is updated.
* @throws Exception
*/
@Test public void testAlertDefinitionChanged() throws Exception {
installHdfsService();
int definitionCount=definitionDao.findAll().size();
AlertDefinitionEntity definition=ormHelper.createAlertDefinition(1L);
Assert.assertEquals(definitionCount + 1,definitionDao.findAll().size());
AggregateSource source=new AggregateSource();
Reporting reporting=new Reporting();
ReportTemplate okTemplate=new ReportTemplate();
okTemplate.setValue(50.0d);
okTemplate.setText("foo");
reporting.setOk(okTemplate);
source.setReporting(reporting);
source.setAlertName(definition.getDefinitionName());
source.setType(SourceType.AGGREGATE);
AlertDefinitionEntity aggregateEntity=new AlertDefinitionEntity();
aggregateEntity.setClusterId(1L);
aggregateEntity.setComponentName("DATANODE");
aggregateEntity.setEnabled(true);
aggregateEntity.setDefinitionName("datanode_aggregate");
aggregateEntity.setScope(Scope.ANY);
aggregateEntity.setServiceName("HDFS");
aggregateEntity.setSource(new Gson().toJson(source));
aggregateEntity.setHash(UUID.randomUUID().toString());
aggregateEntity.setScheduleInterval(1);
aggregateEntity.setSourceType(SourceType.AGGREGATE);
definitionDao.create(aggregateEntity);
AlertDefinition aggregate=aggregateMapping.getAggregateDefinition(1L,source.getAlertName());
Assert.assertNotNull(aggregate);
Assert.assertEquals("foo",aggregate.getSource().getReporting().getOk().getText());
String sourceText=aggregateEntity.getSource();
sourceText=sourceText.replace("foo","bar");
aggregateEntity.setSource(sourceText);
definitionDao.merge(aggregateEntity);
aggregate=aggregateMapping.getAggregateDefinition(1L,source.getAlertName());
Assert.assertNotNull(aggregate);
Assert.assertEquals("bar",aggregate.getSource().getReporting().getOk().getText());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that a default {@link AlertGroupEntity} is created when a service is
* installed.
* @throws Exception
*/
@Test public void testDefaultAlertGroupCreation() throws Exception {
Assert.assertEquals(0,dispatchDao.findAllGroups().size());
installHdfsService();
Assert.assertEquals(1,dispatchDao.findAllGroups().size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that all {@link AlertDefinitionEntity} instances are created for the
* installed service.
* @throws Exception
*/
@Test public void testAlertDefinitionInsertion() throws Exception {
Assert.assertEquals(0,definitionDao.findAll().size());
installHdfsService();
Assert.assertEquals(6,definitionDao.findAll().size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that a default {@link AlertGroupEntity} is removed when a service is
* removed.
* @throws Exception
*/
@Test public void testDefaultAlertGroupRemoved() throws Exception {
Assert.assertEquals(0,dispatchDao.findAllGroups().size());
installHdfsService();
Assert.assertEquals(1,dispatchDao.findAllGroups().size());
cluster.getService("HDFS").delete();
Assert.assertEquals(0,dispatchDao.findAllGroups().size());
}
Class: org.apache.ambari.server.state.alerts.AlertReceivedListenerTest InternalCallVerifier EqualityVerifier
/**
* Tests an invalid pairing of component to host.
*/
@Test public void testInvalidServiceComponentHost(){
String definitionName=ALERT_DEFINITION + "1";
String componentName="DATANODE";
Alert alert1=new Alert(definitionName,null,"HDFS",componentName,HOST1,AlertState.OK);
alert1.setCluster(m_cluster.getClusterName());
alert1.setLabel(ALERT_LABEL);
alert1.setText("HDFS " + componentName + " is OK");
alert1.setTimestamp(1L);
AlertReceivedListener listener=m_injector.getInstance(AlertReceivedListener.class);
AlertReceivedEvent event1=new AlertReceivedEvent(m_cluster.getClusterId(),alert1);
listener.onAlertEvent(event1);
List allCurrent=m_dao.findCurrent();
assertEquals(1,allCurrent.size());
alert1.setComponent("INVALID");
m_dao.removeCurrentByHost(HOST1);
allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
listener.onAlertEvent(event1);
allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that a disabled definition doesn't record alert events.
*/
@Test public void testInvalidAlertDefinition(){
String componentName="DATANODE";
Alert alert1=new Alert("missing_alert_definition_name",null,"HDFS",componentName,HOST1,AlertState.OK);
alert1.setLabel(ALERT_LABEL);
alert1.setText("HDFS " + componentName + " is OK");
alert1.setTimestamp(1L);
AlertReceivedListener listener=m_injector.getInstance(AlertReceivedListener.class);
AlertReceivedEvent event1=new AlertReceivedEvent(m_cluster.getClusterId(),alert1);
listener.onAlertEvent(event1);
List allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that a disabled definition doesn't record alert events.
*/
@Test public void testDisabledAlert(){
String definitionName=ALERT_DEFINITION + "1";
String componentName="DATANODE";
Alert alert1=new Alert(definitionName,null,"HDFS",componentName,HOST1,AlertState.OK);
alert1.setCluster(m_cluster.getClusterName());
alert1.setLabel(ALERT_LABEL);
alert1.setText("HDFS " + componentName + " is OK");
alert1.setTimestamp(1L);
AlertReceivedListener listener=m_injector.getInstance(AlertReceivedListener.class);
AlertReceivedEvent event1=new AlertReceivedEvent(m_cluster.getClusterId(),alert1);
listener.onAlertEvent(event1);
List allCurrent=m_dao.findCurrent();
assertEquals(1,allCurrent.size());
AlertDefinitionEntity definition=m_definitionDao.findByName(m_cluster.getClusterId(),definitionName);
definition.setEnabled(false);
m_definitionDao.merge(definition);
m_dao.removeCurrentDisabledAlerts();
allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
listener.onAlertEvent(event1);
allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests an invalid host is being reported in an alert.
*/
@Test public void testInvalidHost(){
String definitionName=ALERT_DEFINITION + "1";
String componentName="DATANODE";
Alert alert1=new Alert(definitionName,null,"HDFS",componentName,HOST1,AlertState.OK);
alert1.setCluster(m_cluster.getClusterName());
alert1.setLabel(ALERT_LABEL);
alert1.setText("HDFS " + componentName + " is OK");
alert1.setTimestamp(1L);
AlertReceivedListener listener=m_injector.getInstance(AlertReceivedListener.class);
AlertReceivedEvent event1=new AlertReceivedEvent(m_cluster.getClusterId(),alert1);
listener.onAlertEvent(event1);
List allCurrent=m_dao.findCurrent();
assertEquals(1,allCurrent.size());
alert1.setHostName("INVALID");
m_dao.removeCurrentByHost(HOST1);
allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
listener.onAlertEvent(event1);
allCurrent=m_dao.findCurrent();
assertEquals(0,allCurrent.size());
}
Class: org.apache.ambari.server.state.alerts.AlertStateChangedEventTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that {@link AggregateAlertRecalculateEvent}s are fired correctly.
* @throws Exception
*/
@Test public void testAggregateAlertRecalculateEvent() throws Exception {
Class extends AlertEvent> eventClass=AggregateAlertRecalculateEvent.class;
Assert.assertFalse(m_listener.isAlertEventReceived(eventClass));
AlertsDAO dao=injector.getInstance(AlertsDAO.class);
dao.removeCurrentByServiceComponentHost(1,"HDFS","DATANODE","c6401");
Assert.assertTrue(m_listener.isAlertEventReceived(eventClass));
Assert.assertEquals(1,m_listener.getAlertEventReceivedCount(eventClass));
}
Class: org.apache.ambari.server.state.alerts.InitialAlertEventTest TestInitializer InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
*/
@Before public void setup() throws Exception {
m_injector=Guice.createInjector(Modules.override(new InMemoryDefaultTestModule()).with(new MockModule()));
m_injector.getInstance(GuiceJpaInitializer.class);
m_listener=m_injector.getInstance(MockEventListener.class);
m_eventPublisher=m_injector.getInstance(AlertEventPublisher.class);
EventBus synchronizedBus=EventBusSynchronizer.synchronizeAlertEventPublisher(m_injector);
synchronizedBus.register(m_listener);
m_definitionDao=m_injector.getInstance(AlertDefinitionDAO.class);
m_clusters=m_injector.getInstance(Clusters.class);
m_serviceFactory=m_injector.getInstance(ServiceFactory.class);
m_alertsDao=m_injector.getInstance(AlertsDAO.class);
m_clusterName="c1";
m_clusters.addCluster(m_clusterName,new StackId("HDP","2.0.6"));
m_cluster=m_clusters.getCluster(m_clusterName);
Assert.assertNotNull(m_cluster);
installHdfsService();
Assert.assertEquals(1,m_cluster.getServices().size());
Assert.assertEquals(6,m_definitionDao.findAll().size());
}
InternalCallVerifier EqualityVerifier
/**
* Tests that when a new alert is received that an {@link InitialAlertEvent}is fired.
* @throws Exception
*/
@Test public void testInitialAlertEvent() throws Exception {
Assert.assertEquals(0,m_alertsDao.findAll().size());
Assert.assertEquals(0,m_listener.getAlertEventReceivedCount(InitialAlertEvent.class));
AlertDefinitionEntity definition=m_definitionDao.findAll(m_cluster.getClusterId()).get(0);
Alert alert=new Alert(definition.getDefinitionName(),null,definition.getServiceName(),definition.getComponentName(),null,AlertState.OK);
alert.setCluster(m_clusterName);
AlertReceivedEvent event=new AlertReceivedEvent(m_cluster.getClusterId(),alert);
m_eventPublisher.publish(event);
Assert.assertEquals(1,m_alertsDao.findAll().size());
Assert.assertEquals(1,m_listener.getAlertEventReceivedCount(InitialAlertEvent.class));
m_listener.reset();
alert.setState(AlertState.WARNING);
m_eventPublisher.publish(event);
Assert.assertEquals(0,m_listener.getAlertEventReceivedCount(InitialAlertEvent.class));
}
Class: org.apache.ambari.server.state.cluster.AlertDataManagerTest InternalCallVerifier EqualityVerifier
/**
* Tests that {@link AlertStateChangeEvent} cause an {@link AlertNoticeEntity}entry.
* @throws Exception
*/
@Test public void testAlertNotices() throws Exception {
List notices=m_dispatchDao.findAllNotices();
assertEquals(0,notices.size());
List definitions=m_definitionDao.findAll(m_cluster.getClusterId());
AlertDefinitionEntity definition=definitions.get(0);
AlertHistoryEntity history=new AlertHistoryEntity();
history.setServiceName(definition.getServiceName());
history.setClusterId(m_cluster.getClusterId());
history.setAlertDefinition(definition);
history.setAlertLabel(definition.getDefinitionName());
history.setAlertText(definition.getDefinitionName());
history.setAlertTimestamp(System.currentTimeMillis());
history.setHostName(HOST1);
history.setAlertState(AlertState.OK);
m_dao.create(history);
List histories=m_dao.findAll(m_cluster.getClusterId());
assertEquals(1,histories.size());
AlertCurrentEntity currentAlert=new AlertCurrentEntity();
currentAlert.setAlertHistory(histories.get(0));
currentAlert.setMaintenanceState(MaintenanceState.OFF);
currentAlert.setOriginalTimestamp(System.currentTimeMillis());
currentAlert.setLatestTimestamp(System.currentTimeMillis());
m_dao.create(currentAlert);
AlertTargetEntity target=m_helper.createAlertTarget();
Set targets=new HashSet();
targets.add(target);
AlertGroupEntity group=m_helper.createAlertGroup(m_cluster.getClusterId(),targets);
group.addAlertDefinition(definitions.get(0));
m_dispatchDao.merge(group);
Alert alert1=new Alert(ALERT_DEFINITION,null,SERVICE,COMPONENT,HOST1,AlertState.OK);
AlertStateChangeEvent event=new AlertStateChangeEvent(m_cluster.getClusterId(),alert1,currentAlert,AlertState.CRITICAL);
AlertStateChangedListener listener=m_injector.getInstance(AlertStateChangedListener.class);
listener.onAlertEvent(event);
notices=m_dispatchDao.findAllNotices();
assertEquals(1,notices.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAggregateAlerts() throws Exception {
AlertDefinitionEntity definition=new AlertDefinitionEntity();
definition.setDefinitionName("to_aggregate");
definition.setLabel("My Label");
definition.setLabel("My Description");
definition.setServiceName(SERVICE);
definition.setComponentName(null);
definition.setClusterId(m_cluster.getClusterId());
definition.setHash(UUID.randomUUID().toString());
definition.setScheduleInterval(Integer.valueOf(60));
definition.setScope(Scope.HOST);
definition.setSource("{\"type\" : \"SCRIPT\"}");
definition.setSourceType(SourceType.SCRIPT);
m_definitionDao.create(definition);
AlertDefinitionEntity aggDef=new AlertDefinitionEntity();
aggDef.setDefinitionName("aggregate_test");
aggDef.setServiceName(SERVICE);
aggDef.setComponentName(null);
aggDef.setClusterId(m_cluster.getClusterId());
aggDef.setHash(UUID.randomUUID().toString());
aggDef.setScheduleInterval(Integer.valueOf(60));
aggDef.setScope(Scope.SERVICE);
AggregateSource source=new AggregateSource();
source.setAlertName("to_aggregate");
Field field=Source.class.getDeclaredField("type");
field.setAccessible(true);
field.set(source,SourceType.AGGREGATE);
Reporting reporting=new Reporting();
ReportTemplate template=new ReportTemplate();
template.setText("You are good {1}/{0}");
reporting.setOk(template);
template=new ReportTemplate();
template.setText("Going bad {1}/{0}");
template.setValue(Double.valueOf(0.33d));
reporting.setWarning(template);
template=new ReportTemplate();
template.setText("On fire! {1}/{0}");
template.setValue(Double.valueOf(0.66d));
reporting.setCritical(template);
source.setReporting(reporting);
Gson gson=new Gson();
aggDef.setSource(gson.toJson(source));
aggDef.setSourceType(SourceType.AGGREGATE);
m_definitionDao.create(aggDef);
for (int i=0; i < 4; i++) {
AlertHistoryEntity history=new AlertHistoryEntity();
history.setAlertDefinition(definition);
history.setAlertInstance(null);
history.setAlertLabel(definition.getLabel());
history.setAlertState(AlertState.OK);
history.setAlertText("OK");
history.setAlertTimestamp(Long.valueOf(1));
history.setClusterId(m_cluster.getClusterId());
history.setComponentName(definition.getComponentName());
history.setHostName("h" + (i + 1));
history.setServiceName(definition.getServiceName());
m_dao.create(history);
AlertCurrentEntity current=new AlertCurrentEntity();
current.setAlertHistory(history);
current.setLatestText(history.getAlertText());
current.setLatestTimestamp(Long.valueOf(1L));
current.setOriginalTimestamp(Long.valueOf(1L));
m_dao.merge(current);
}
AlertEventPublisher publisher=m_injector.getInstance(AlertEventPublisher.class);
EventBusSynchronizer.synchronizeAlertEventPublisher(m_injector);
final AtomicReference ref=new AtomicReference();
publisher.register(new TestListener(){
@Override @Subscribe public void catchIt( AlertReceivedEvent event){
ref.set(event.getAlert());
}
}
);
AlertAggregateListener listener=m_injector.getInstance(AlertAggregateListener.class);
AlertDefinitionFactory factory=new AlertDefinitionFactory();
AggregateDefinitionMapping aggregateMapping=m_injector.getInstance(AggregateDefinitionMapping.class);
AlertDefinition aggregateDefinition=factory.coerce(aggDef);
aggregateMapping.registerAggregate(m_cluster.getClusterId(),aggregateDefinition);
Assert.assertEquals(aggregateDefinition,aggregateMapping.getAggregateDefinitions(m_cluster.getClusterId()).get(0));
Assert.assertEquals(definition.getDefinitionName(),aggregateMapping.getAlertsWithAggregates(m_cluster.getClusterId()).get(0));
AggregateSource as=(AggregateSource)aggregateDefinition.getSource();
AlertDefinition aggregatedDefinition=aggregateMapping.getAggregateDefinition(m_cluster.getClusterId(),as.getAlertName());
assertNotNull(aggregatedDefinition);
Alert alert=new Alert(definition.getDefinitionName(),null,definition.getServiceName(),definition.getComponentName(),"h1",AlertState.OK);
AlertCurrentEntity current=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h1",definition.getDefinitionName());
AlertStateChangeEvent event=new AlertStateChangeEvent(m_cluster.getClusterId(),alert,current,AlertState.OK);
listener.onAlertStateChangeEvent(event);
assertNotNull(ref.get());
assertEquals(AlertState.OK,ref.get().getState());
assertTrue(ref.get().getText().indexOf("0/4") > -1);
current.getAlertHistory().setAlertState(AlertState.CRITICAL);
m_dao.merge(current.getAlertHistory());
listener.onAlertStateChangeEvent(event);
assertEquals("aggregate_test",ref.get().getName());
assertEquals(AlertState.OK,ref.get().getState());
assertTrue(ref.get().getText().indexOf("1/4") > -1);
current=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h2",definition.getDefinitionName());
current.getAlertHistory().setAlertState(AlertState.WARNING);
m_dao.merge(current.getAlertHistory());
listener.onAlertStateChangeEvent(event);
assertEquals("aggregate_test",ref.get().getName());
assertEquals(AlertState.WARNING,ref.get().getState());
assertTrue(ref.get().getText().indexOf("2/4") > -1);
current=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),"h3",definition.getDefinitionName());
current.getAlertHistory().setAlertState(AlertState.CRITICAL);
m_dao.merge(current.getAlertHistory());
listener.onAlertStateChangeEvent(event);
assertEquals("aggregate_test",ref.get().getName());
assertEquals(AlertState.CRITICAL,ref.get().getState());
assertTrue(ref.get().getText().indexOf("3/4") > -1);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAlertRecords(){
Alert alert1=new Alert(ALERT_DEFINITION,null,SERVICE,COMPONENT,HOST1,AlertState.OK);
alert1.setLabel(ALERT_LABEL);
alert1.setText("Component component1 is OK");
alert1.setTimestamp(1L);
alert1.setCluster(m_cluster.getClusterName());
Alert alert2=new Alert(ALERT_DEFINITION,null,SERVICE,COMPONENT,HOST2,AlertState.CRITICAL);
alert2.setLabel(ALERT_LABEL);
alert2.setText("Component component2 is not OK");
alert2.setCluster(m_cluster.getClusterName());
AlertReceivedListener listener=m_injector.getInstance(AlertReceivedListener.class);
AlertReceivedEvent event1=new AlertReceivedEvent(m_cluster.getClusterId(),alert1);
AlertReceivedEvent event2=new AlertReceivedEvent(m_cluster.getClusterId(),alert2);
listener.onAlertEvent(event1);
listener.onAlertEvent(event2);
List allCurrent=m_dao.findCurrentByService(m_cluster.getClusterId(),SERVICE);
assertEquals(2,allCurrent.size());
List allHistory=m_dao.findAll(m_cluster.getClusterId());
assertEquals(2,allHistory.size());
AlertCurrentEntity current=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),HOST1,ALERT_DEFINITION);
assertNotNull(current);
assertEquals(HOST1,current.getAlertHistory().getHostName());
assertEquals(ALERT_DEFINITION,current.getAlertHistory().getAlertDefinition().getDefinitionName());
assertEquals(ALERT_LABEL,current.getAlertHistory().getAlertLabel());
assertEquals("Component component1 is OK",current.getAlertHistory().getAlertText());
assertEquals(current.getAlertHistory().getAlertState(),AlertState.OK);
assertEquals(1L,current.getOriginalTimestamp().longValue());
assertEquals(1L,current.getLatestTimestamp().longValue());
Long currentId=current.getAlertId();
Long historyId=current.getAlertHistory().getAlertId();
Alert alert3=new Alert(ALERT_DEFINITION,null,SERVICE,COMPONENT,HOST1,AlertState.OK);
alert3.setLabel(ALERT_LABEL);
alert3.setText("Component component1 is OK");
alert3.setTimestamp(2L);
alert3.setCluster(m_cluster.getClusterName());
AlertReceivedEvent event3=new AlertReceivedEvent(m_cluster.getClusterId(),alert3);
listener.onAlertEvent(event3);
current=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),HOST1,ALERT_DEFINITION);
assertNotNull(current);
assertEquals(currentId,current.getAlertId());
assertEquals(historyId,current.getAlertHistory().getAlertId());
assertEquals(HOST1,current.getAlertHistory().getHostName());
assertEquals(ALERT_DEFINITION,current.getAlertHistory().getAlertDefinition().getDefinitionName());
assertEquals(ALERT_LABEL,current.getAlertHistory().getAlertLabel());
assertEquals("Component component1 is OK",current.getAlertHistory().getAlertText());
assertEquals(current.getAlertHistory().getAlertState(),AlertState.OK);
assertEquals(1L,current.getOriginalTimestamp().longValue());
assertEquals(2L,current.getLatestTimestamp().longValue());
allCurrent=m_dao.findCurrentByService(m_cluster.getClusterId(),SERVICE);
assertEquals(2,allCurrent.size());
allHistory=m_dao.findAll(m_cluster.getClusterId());
assertEquals(2,allHistory.size());
Alert alert4=new Alert(ALERT_DEFINITION,null,SERVICE,COMPONENT,HOST1,AlertState.WARNING);
alert4.setLabel(ALERT_LABEL);
alert4.setText("Component component1 is about to go down");
alert4.setTimestamp(3L);
alert4.setCluster(m_cluster.getClusterName());
AlertReceivedEvent event4=new AlertReceivedEvent(m_cluster.getClusterId(),alert4);
listener.onAlertEvent(event4);
current=m_dao.findCurrentByHostAndName(m_cluster.getClusterId(),HOST1,ALERT_DEFINITION);
assertNotNull(current);
assertEquals(current.getAlertId(),currentId);
assertFalse(historyId.equals(current.getAlertHistory().getAlertId()));
assertEquals(HOST1,current.getAlertHistory().getHostName());
assertEquals(ALERT_DEFINITION,current.getAlertHistory().getAlertDefinition().getDefinitionName());
assertEquals(ALERT_LABEL,current.getAlertHistory().getAlertLabel());
assertEquals("Component component1 is about to go down",current.getAlertHistory().getAlertText());
assertEquals(current.getAlertHistory().getAlertState(),AlertState.WARNING);
assertEquals(3L,current.getOriginalTimestamp().longValue());
assertEquals(3L,current.getLatestTimestamp().longValue());
allCurrent=m_dao.findCurrentByService(m_cluster.getClusterId(),SERVICE);
assertEquals(2,allCurrent.size());
allHistory=m_dao.findAll(m_cluster.getClusterId());
assertEquals(3,allHistory.size());
}
Class: org.apache.ambari.server.state.cluster.ClusterDeadlockTest BranchVerifier InternalCallVerifier BooleanVerifier
/**
* Tests that while serializing a service component, writes to that service
* component do not cause a deadlock with the global cluster lock.
* @throws Exception
*/
@Test() public void testAddingHostComponentsWhileReading() throws Exception {
Service service=cluster.getService("HDFS");
ServiceComponent nameNodeComponent=service.getServiceComponent("NAMENODE");
ServiceComponent dataNodeComponent=service.getServiceComponent("DATANODE");
List threads=new ArrayList();
for (int i=0; i < 5; i++) {
ServiceComponentReaderWriterThread thread=new ServiceComponentReaderWriterThread();
thread.setDataNodeComponent(dataNodeComponent);
thread.setNameNodeComponent(nameNodeComponent);
thread.start();
threads.add(thread);
}
DeadlockWarningThread wt=new DeadlockWarningThread(threads);
while (true) {
if (!wt.isAlive()) {
break;
}
}
if (wt.isDeadlocked()) {
Assert.assertFalse(wt.getErrorMessages().toString(),wt.isDeadlocked());
}
else {
Assert.assertFalse(wt.isDeadlocked());
}
}
BranchVerifier InternalCallVerifier BooleanVerifier
/**
* Tests that concurrent impl serialization and impl writing doesn't cause a
* deadlock.
* @throws Exception
*/
@Test() public void testDeadlockBetweenImplementations() throws Exception {
Service service=cluster.getService("HDFS");
ServiceComponent nameNodeComponent=service.getServiceComponent("NAMENODE");
ServiceComponent dataNodeComponent=service.getServiceComponent("DATANODE");
ServiceComponentHost nameNodeSCH=createNewServiceComponentHost("HDFS","NAMENODE","c64-0");
ServiceComponentHost dataNodeSCH=createNewServiceComponentHost("HDFS","DATANODE","c64-0");
List threads=new ArrayList();
for (int i=0; i < NUMBER_OF_THREADS; i++) {
DeadlockExerciserThread thread=new DeadlockExerciserThread();
thread.setCluster(cluster);
thread.setService(service);
thread.setDataNodeComponent(dataNodeComponent);
thread.setNameNodeComponent(nameNodeComponent);
thread.setNameNodeSCH(nameNodeSCH);
thread.setDataNodeSCH(dataNodeSCH);
thread.start();
threads.add(thread);
}
DeadlockWarningThread wt=new DeadlockWarningThread(threads);
while (true) {
if (!wt.isAlive()) {
break;
}
}
if (wt.isDeadlocked()) {
Assert.assertFalse(wt.getErrorMessages().toString(),wt.isDeadlocked());
}
else {
Assert.assertFalse(wt.isDeadlocked());
}
}
BranchVerifier InternalCallVerifier BooleanVerifier
/**
* Tests that no deadlock exists while restarting components and reading from
* the cluster.
* @throws Exception
*/
@Test() public void testDeadlockWhileRestartingComponents() throws Exception {
List serviceComponentHosts=new ArrayList();
for ( String hostName : hostNames) {
serviceComponentHosts.add(createNewServiceComponentHost("HDFS","NAMENODE",hostName));
serviceComponentHosts.add(createNewServiceComponentHost("HDFS","DATANODE",hostName));
}
((ClusterImpl)cluster).loadServiceHostComponents();
List threads=new ArrayList();
for (int i=0; i < NUMBER_OF_THREADS; i++) {
ClusterReaderThread clusterReaderThread=new ClusterReaderThread();
ClusterWriterThread clusterWriterThread=new ClusterWriterThread();
ServiceComponentRestartThread schWriterThread=new ServiceComponentRestartThread(serviceComponentHosts);
threads.add(clusterReaderThread);
threads.add(clusterWriterThread);
threads.add(schWriterThread);
clusterReaderThread.start();
clusterWriterThread.start();
schWriterThread.start();
}
DeadlockWarningThread wt=new DeadlockWarningThread(threads);
while (true) {
if (!wt.isAlive()) {
break;
}
}
if (wt.isDeadlocked()) {
Assert.assertFalse(wt.getErrorMessages().toString(),wt.isDeadlocked());
}
else {
Assert.assertFalse(wt.isDeadlocked());
}
}
BranchVerifier InternalCallVerifier BooleanVerifier
@Test public void testDeadlockWithConfigsUpdate() throws Exception {
List threads=new ArrayList();
for (int i=0; i < NUMBER_OF_THREADS; i++) {
ClusterDesiredConfigsReaderThread readerThread=null;
for (int j=0; j < NUMBER_OF_THREADS; j++) {
readerThread=new ClusterDesiredConfigsReaderThread();
threads.add(readerThread);
}
for ( Config config : cluster.getAllConfigs()) {
ConfigUpdaterThread configUpdaterThread=new ConfigUpdaterThread(config);
threads.add(configUpdaterThread);
}
}
for ( Thread thread : threads) {
thread.start();
}
DeadlockWarningThread wt=new DeadlockWarningThread(threads);
while (true) {
if (!wt.isAlive()) {
break;
}
}
if (wt.isDeadlocked()) {
Assert.assertFalse(wt.getErrorMessages().toString(),wt.isDeadlocked());
}
else {
Assert.assertFalse(wt.isDeadlocked());
}
}
Class: org.apache.ambari.server.state.cluster.ClusterImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetSessionAttributes() throws Exception {
Map attributes=new HashMap();
attributes.put("foo","bar");
AmbariSessionManager sessionManager=createMock(AmbariSessionManager.class);
ClusterImpl cluster=createMockBuilder(ClusterImpl.class).addMockedMethod("getSessionManager").addMockedMethod("getClusterName").createMock();
expect(cluster.getSessionManager()).andReturn(sessionManager).anyTimes();
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
expect(sessionManager.getAttribute("cluster_session_attributes:c1")).andReturn(attributes);
expect(sessionManager.getAttribute("cluster_session_attributes:c1")).andReturn(null);
replay(sessionManager,cluster);
assertEquals(attributes,cluster.getSessionAttributes());
assertEquals(Collections.emptyMap(),cluster.getSessionAttributes());
verify(sessionManager,cluster);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDeleteService() throws Exception {
String serviceToDelete="TEZ";
String clusterName="TEST_CLUSTER";
String hostName1="HOST1", hostName2="HOST2";
clusters.addCluster(clusterName,new StackId("HDP-2.1.1"));
Cluster cluster=clusters.getCluster(clusterName);
clusters.addHost(hostName1);
clusters.addHost(hostName2);
Host host1=clusters.getHost(hostName1);
host1.setHostAttributes(ImmutableMap.of("os_family","centos","os_release_version","6.0"));
host1.persist();
Host host2=clusters.getHost(hostName2);
host2.setHostAttributes(ImmutableMap.of("os_family","centos","os_release_version","6.0"));
host2.persist();
clusters.mapHostsToCluster(Sets.newHashSet(hostName1,hostName2),clusterName);
Service hdfs=cluster.addService("HDFS");
hdfs.persist();
ServiceComponent nameNode=hdfs.addServiceComponent("NAMENODE");
nameNode.persist();
nameNode.addServiceComponentHost(hostName1).persist();
ServiceComponent dataNode=hdfs.addServiceComponent("DATANODE");
dataNode.persist();
dataNode.addServiceComponentHost(hostName1).persist();
dataNode.addServiceComponentHost(hostName2).persist();
ServiceComponent hdfsClient=hdfs.addServiceComponent("HDFS_CLIENT");
hdfsClient.persist();
hdfsClient.addServiceComponentHost(hostName1).persist();
hdfsClient.addServiceComponentHost(hostName2).persist();
Service tez=cluster.addService(serviceToDelete);
tez.persist();
ServiceComponent tezClient=tez.addServiceComponent("TEZ_CLIENT");
tezClient.persist();
ServiceComponentHost tezClientHost1=tezClient.addServiceComponentHost(hostName1);
tezClientHost1.persist();
ServiceComponentHost tezClientHost2=tezClient.addServiceComponentHost(hostName2);
tezClientHost2.persist();
cluster.deleteService(serviceToDelete);
assertFalse("Deleted service should be removed from the service collection !",cluster.getServices().containsKey(serviceToDelete));
assertEquals("All components of the deleted service should be removed from all hosts",0,cluster.getServiceComponentHosts(serviceToDelete,null).size());
boolean checkHost1=!cluster.getServiceComponentHosts(hostName1).contains(tezClientHost1);
boolean checkHost2=!cluster.getServiceComponentHosts(hostName2).contains(tezClientHost2);
assertTrue("All components of the deleted service should be removed from all hosts",checkHost1 && checkHost2);
}
UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testDeleteHost() throws Exception {
String clusterName="TEST_DELETE_HOST";
String hostName1="HOSTNAME1", hostName2="HOSTNAME2";
String hostToDelete=hostName2;
clusters.addCluster(clusterName,new StackId("HDP-2.1.1"));
Cluster cluster=clusters.getCluster(clusterName);
clusters.addHost(hostName1);
clusters.addHost(hostName2);
Host host1=clusters.getHost(hostName1);
host1.setHostAttributes(ImmutableMap.of("os_family","centos","os_release_version","6.0"));
host1.persist();
Host host2=clusters.getHost(hostName2);
host2.setHostAttributes(ImmutableMap.of("os_family","centos","os_release_version","6.0"));
host2.persist();
clusters.mapHostsToCluster(Sets.newHashSet(hostName1,hostName2),clusterName);
clusters.deleteHost(hostToDelete);
assertTrue(clusters.getClustersForHost(hostToDelete).isEmpty());
assertFalse(clusters.getHostsForCluster(clusterName).containsKey(hostToDelete));
assertFalse(cluster.getHosts().contains(hostToDelete));
try {
clusters.getHost(hostToDelete);
fail("getHost(hostName) should throw Exception when invoked for deleted host !");
}
catch ( HostNotFoundException e) {
}
}
Class: org.apache.ambari.server.state.cluster.ClusterTest InternalCallVerifier EqualityVerifier
@Test public void testGetServiceComponentHosts_ForServiceComponent() throws Exception {
createDefaultCluster();
Service s=serviceFactory.createNew(c1,"HDFS");
c1.addService(s);
s.persist();
ServiceComponent scNN=serviceComponentFactory.createNew(s,"NAMENODE");
s.addServiceComponent(scNN);
scNN.persist();
ServiceComponentHost schNNH1=serviceComponentHostFactory.createNew(scNN,"h1");
scNN.addServiceComponentHost(schNNH1);
schNNH1.persist();
ServiceComponent scDN=serviceComponentFactory.createNew(s,"DATANODE");
s.addServiceComponent(scDN);
scDN.persist();
ServiceComponentHost scDNH1=serviceComponentHostFactory.createNew(scDN,"h1");
scDN.addServiceComponentHost(scDNH1);
scDNH1.persist();
ServiceComponentHost scDNH2=serviceComponentHostFactory.createNew(scDN,"h2");
scDN.addServiceComponentHost(scDNH2);
scDNH2.persist();
List scHosts;
scHosts=c1.getServiceComponentHosts("HDFS","DATANODE");
Assert.assertEquals(2,scHosts.size());
scHosts=c1.getServiceComponentHosts("HDFS","UNKNOWN COMPONENT");
Assert.assertEquals(0,scHosts.size());
scHosts=c1.getServiceComponentHosts("UNKNOWN SERVICE","DATANODE");
Assert.assertEquals(0,scHosts.size());
scHosts=c1.getServiceComponentHosts("UNKNOWN SERVICE","UNKNOWN COMPONENT");
Assert.assertEquals(0,scHosts.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testTransitionNonReportableHost() throws Exception {
StackId stackId=new StackId("HDP-2.0.5");
String clusterName="c1";
clusters.addCluster(clusterName,stackId);
Cluster c1=clusters.getCluster(clusterName);
Assert.assertEquals(clusterName,c1.getClusterName());
Assert.assertEquals(1,c1.getClusterId());
clusters.addHost("h-1");
clusters.addHost("h-2");
clusters.addHost("h-3");
for ( String hostName : new String[]{"h-1","h-2","h-3"}) {
Host h=clusters.getHost(hostName);
h.setIPv4("ipv4");
h.setIPv6("ipv6");
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","5.9");
h.setHostAttributes(hostAttributes);
h.persist();
}
String v1="2.0.5-1";
String v2="2.0.5-2";
c1.setDesiredStackVersion(stackId);
RepositoryVersionEntity rve1=helper.getOrCreateRepositoryVersion(stackId,v1);
RepositoryVersionEntity rve2=helper.getOrCreateRepositoryVersion(stackId,v2);
c1.setCurrentStackVersion(stackId);
c1.createClusterVersion(stackId,v1,"admin",RepositoryVersionState.UPGRADING);
c1.transitionClusterVersion(stackId,v1,RepositoryVersionState.CURRENT);
clusters.mapHostToCluster("h-1",clusterName);
clusters.mapHostToCluster("h-2",clusterName);
clusters.mapHostToCluster("h-3",clusterName);
ClusterVersionDAOMock.failOnCurrentVersionState=false;
Service service=c1.addService("ZOOKEEPER");
ServiceComponent sc=service.addServiceComponent("ZOOKEEPER_SERVER");
sc.addServiceComponentHost("h-1");
sc.addServiceComponentHost("h-2");
service=c1.addService("SQOOP");
sc=service.addServiceComponent("SQOOP");
sc.addServiceComponentHost("h-3");
List entities=hostVersionDAO.findByClusterAndHost(clusterName,"h-3");
assertTrue("Expected no host versions",null == entities || 0 == entities.size());
c1.createClusterVersion(stackId,v2,"admin",RepositoryVersionState.INSTALLING);
c1.transitionClusterVersion(stackId,v2,RepositoryVersionState.INSTALLED);
c1.transitionClusterVersion(stackId,v2,RepositoryVersionState.UPGRADING);
c1.transitionClusterVersion(stackId,v2,RepositoryVersionState.UPGRADED);
c1.transitionClusterVersion(stackId,v2,RepositoryVersionState.CURRENT);
entities=hostVersionDAO.findByClusterAndHost(clusterName,"h-3");
assertEquals(1,entities.size());
}
UtilityVerifier InternalCallVerifier NullVerifier HybridVerifier
@Test public void testTransitionClusterVersionTransactionFail() throws Exception {
createDefaultCluster();
StackId stackId=new StackId("HDP","0.2");
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,"0.2","admin",RepositoryVersionState.INSTALLING);
c1.transitionClusterVersion(stackId,"0.2",RepositoryVersionState.INSTALLED);
c1.transitionClusterVersion(stackId,"0.2",RepositoryVersionState.UPGRADING);
c1.transitionClusterVersion(stackId,"0.2",RepositoryVersionState.UPGRADED);
try {
ClusterVersionDAOMock.failOnCurrentVersionState=true;
c1.transitionClusterVersion(stackId,"0.2",RepositoryVersionState.CURRENT);
Assert.fail();
}
catch ( AmbariException e) {
}
finally {
ClusterVersionDAOMock.failOnCurrentVersionState=false;
}
assertNotNull(c1.getCurrentClusterVersion());
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testHostEvent() throws Exception, InvalidStateTransitionException {
createDefaultCluster();
HostInfo hostInfo=new HostInfo();
hostInfo.setHostName("h1");
hostInfo.setInterfaces("fip_4");
hostInfo.setArchitecture("os_arch");
hostInfo.setOS("os_type");
hostInfo.setMemoryTotal(10);
hostInfo.setMemorySize(100);
hostInfo.setProcessorCount(10);
List mounts=new ArrayList();
mounts.add(new DiskInfo("/dev/sda","/mnt/disk1","5000000","4000000","10%","size","fstype"));
hostInfo.setMounts(mounts);
AgentEnv agentEnv=new AgentEnv();
Directory dir1=new Directory();
dir1.setName("/etc/hadoop");
dir1.setType("not_exist");
Directory dir2=new Directory();
dir2.setName("/var/log/hadoop");
dir2.setType("not_exist");
agentEnv.setStackFoldersAndFiles(new Directory[]{dir1,dir2});
AgentVersion agentVersion=new AgentVersion("0.0.x");
long currentTime=1001;
clusters.getHost("h1").handleEvent(new HostRegistrationRequestEvent("h1",agentVersion,currentTime,hostInfo,agentEnv));
Assert.assertEquals(HostState.WAITING_FOR_HOST_STATUS_UPDATES,clusters.getHost("h1").getState());
clusters.getHost("h1").setState(HostState.HEARTBEAT_LOST);
try {
clusters.getHost("h1").handleEvent(new HostHealthyHeartbeatEvent("h1",currentTime,null,null));
fail("Exception should be thrown on invalid event");
}
catch ( InvalidStateTransitionException e) {
}
}
BranchVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteServiceWithConfigHistory() throws Exception {
createDefaultCluster();
c1.addService("HDFS").persist();
Config config1=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=configFactory.createNew(c1,"core-site",new HashMap(){
{
put("x","y");
}
}
,new HashMap>());
config2.setTag("version2");
config1.persist();
c1.addConfig(config1);
config2.persist();
c1.addConfig(config2);
Set configs=new HashSet();
configs.add(config1);
configs.add(config2);
c1.addDesiredConfig("admin",configs);
List serviceConfigVersions=c1.getServiceConfigVersions();
Assert.assertNotNull(serviceConfigVersions);
Assert.assertEquals(1,serviceConfigVersions.size());
Assert.assertEquals(Long.valueOf(1),serviceConfigVersions.get(0).getVersion());
Assert.assertEquals(2,c1.getDesiredConfigs().size());
Assert.assertEquals("version1",c1.getDesiredConfigByType("hdfs-site").getTag());
Assert.assertEquals("version2",c1.getDesiredConfigByType("core-site").getTag());
Map> activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals(1,activeServiceConfigVersions.size());
c1.deleteService("HDFS");
Assert.assertEquals(0,c1.getServices().size());
Assert.assertEquals(0,c1.getServiceConfigVersions().size());
EntityManager em=injector.getProvider(EntityManager.class).get();
Assert.assertEquals(0,em.createQuery("SELECT serviceConfig from ServiceConfigEntity serviceConfig").getResultList().size());
Assert.assertEquals(2,em.createQuery("SELECT config from ClusterConfigEntity config").getResultList().size());
List configMappingEntities=em.createQuery("SELECT configmapping from ClusterConfigMappingEntity configmapping",ClusterConfigMappingEntity.class).getResultList();
Assert.assertEquals(2,configMappingEntities.size());
for ( ClusterConfigMappingEntity configMappingEntity : configMappingEntities) {
if (StringUtils.equals(configMappingEntity.getType(),"core-site")) {
assertEquals("core-site is not part of HDFS in test stack, should remain mapped to cluster",1,configMappingEntity.isSelected());
}
if (StringUtils.equals(configMappingEntity.getType(),"hdfs-site")) {
assertEquals("hdfs-site should be unmapped from cluster when HDFS service is removed",0,configMappingEntity.isSelected());
}
}
Assert.assertEquals(0,em.createNativeQuery("SELECT * from serviceconfigmapping").getResultList().size());
}
UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testBasicClusterSetup() throws Exception {
StackId stackVersion=new StackId("HDP-1.2.0");
createDefaultCluster();
String clusterName="c2";
try {
clusters.getCluster(clusterName);
fail("Exception expected for invalid cluster");
}
catch ( Exception e) {
}
clusters.addCluster(clusterName,stackVersion);
Cluster c2=clusters.getCluster(clusterName);
Assert.assertNotNull(c2);
Assert.assertEquals(clusterName,c2.getClusterName());
c2.setClusterName("foo2");
Assert.assertEquals("foo2",c2.getClusterName());
Assert.assertNotNull(c2.getDesiredStackVersion());
Assert.assertEquals("HDP-1.2.0",c2.getDesiredStackVersion().getStackId());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetHostState() throws Exception {
createDefaultCluster();
clusters.getHost("h1").setState(HostState.HEARTBEAT_LOST);
Assert.assertEquals(HostState.HEARTBEAT_LOST,clusters.getHost("h1").getState());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetServiceComponentHosts_ForService() throws Exception {
createDefaultCluster();
Service s=serviceFactory.createNew(c1,"HDFS");
c1.addService(s);
s.persist();
ServiceComponent scNN=serviceComponentFactory.createNew(s,"NAMENODE");
s.addServiceComponent(scNN);
scNN.persist();
ServiceComponentHost schNNH1=serviceComponentHostFactory.createNew(scNN,"h1");
scNN.addServiceComponentHost(schNNH1);
schNNH1.persist();
ServiceComponent scDN=serviceComponentFactory.createNew(s,"DATANODE");
s.addServiceComponent(scDN);
scDN.persist();
ServiceComponentHost scDNH1=serviceComponentHostFactory.createNew(scDN,"h1");
scDN.addServiceComponentHost(scDNH1);
scDNH1.persist();
ServiceComponentHost scDNH2=serviceComponentHostFactory.createNew(scDN,"h2");
scDN.addServiceComponentHost(scDNH2);
scDNH2.persist();
List scHosts;
scHosts=c1.getServiceComponentHosts("HDFS",null);
Assert.assertEquals(3,scHosts.size());
scHosts=c1.getServiceComponentHosts("UNKNOWN SERVICE",null);
Assert.assertEquals(0,scHosts.size());
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDesiredConfigs() throws Exception {
createDefaultCluster();
Config config1=configFactory.createNew(c1,"global",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=configFactory.createNew(c1,"global",new HashMap(){
{
put("x","y");
}
}
,new HashMap>());
config2.setTag("version2");
Config config3=configFactory.createNew(c1,"core-site",new HashMap(){
{
put("x","y");
}
}
,new HashMap>());
config3.setTag("version2");
c1.addConfig(config1);
c1.addConfig(config2);
c1.addConfig(config3);
try {
c1.addDesiredConfig(null,Collections.singleton(config1));
fail("Cannot set a null user with config");
}
catch ( Exception e) {
}
c1.addDesiredConfig("_test1",Collections.singleton(config1));
c1.addDesiredConfig("_test3",Collections.singleton(config3));
Map desiredConfigs=c1.getDesiredConfigs();
Assert.assertFalse("Expect desired config not contain 'mapred-site'",desiredConfigs.containsKey("mapred-site"));
Assert.assertTrue("Expect desired config contain " + config1.getType(),desiredConfigs.containsKey("global"));
Assert.assertTrue("Expect desired config contain " + config3.getType(),desiredConfigs.containsKey("core-site"));
Assert.assertEquals("Expect desired config for global should be " + config1.getTag(),config1.getTag(),desiredConfigs.get(config1.getType()).getTag());
Assert.assertEquals("_test1",desiredConfigs.get(config1.getType()).getUser());
Assert.assertEquals("_test3",desiredConfigs.get(config3.getType()).getUser());
DesiredConfig dc=desiredConfigs.get(config1.getType());
Assert.assertTrue("Expect no host-level overrides",(null == dc.getHostOverrides() || dc.getHostOverrides().size() == 0));
c1.addDesiredConfig("_test2",Collections.singleton(config2));
Assert.assertEquals("_test2",c1.getDesiredConfigs().get(config2.getType()).getUser());
c1.addDesiredConfig("_test1",Collections.singleton(config1));
Host host=clusters.getHost("h1");
host.addDesiredConfig(c1.getClusterId(),true,"_test2",config2);
desiredConfigs=c1.getDesiredConfigs();
dc=desiredConfigs.get(config1.getType());
Assert.assertNotNull("Expect host-level overrides",dc.getHostOverrides());
Assert.assertEquals("Expect one host-level override",1,dc.getHostOverrides().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testServiceConfigVersionsForGroups() throws Exception {
createDefaultCluster();
Config config1=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config1.setTag("version1");
c1.addConfig(config1);
ServiceConfigVersionResponse scvResponse=c1.addDesiredConfig("admin",Collections.singleton(config1));
assertEquals("SCV 1 should be created",Long.valueOf(1),scvResponse.getVersion());
Map> activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals("Only one scv should be active",1,activeServiceConfigVersions.get("HDFS").size());
Config config2=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("a","c");
}
}
,new HashMap>());
config2.setTag("version2");
ConfigGroup configGroup=configGroupFactory.createNew(c1,"test group","HDFS","descr",Collections.singletonMap("hdfs-site",config2),Collections.emptyMap());
configGroup.persist();
c1.addConfigGroup(configGroup);
scvResponse=c1.createServiceConfigVersion("HDFS","admin","test note",configGroup);
assertEquals("SCV 2 should be created",Long.valueOf(2),scvResponse.getVersion());
activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals("Two service config versions should be active, for default and test groups",2,activeServiceConfigVersions.get("HDFS").size());
Config config3=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("a","d");
}
}
,new HashMap>());
configGroup.setConfigurations(Collections.singletonMap("hdfs-site",config3));
configGroup.persist();
scvResponse=c1.createServiceConfigVersion("HDFS","admin","test note",configGroup);
assertEquals("SCV 3 should be created",Long.valueOf(3),scvResponse.getVersion());
activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals("Two service config versions should be active, for default and test groups",2,activeServiceConfigVersions.get("HDFS").size());
assertEquals(3,c1.getServiceConfigVersions().size());
scvResponse=c1.setServiceConfigVersion("HDFS",2L,"admin","group rollback");
assertEquals("SCV 4 should be created",Long.valueOf(4),scvResponse.getVersion());
configGroup=c1.getConfigGroups().get(configGroup.getId());
activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals("Two service config versions should be active, for default and test groups",2,activeServiceConfigVersions.get("HDFS").size());
assertEquals(4,c1.getServiceConfigVersions().size());
Map configProperties=configGroup.getConfigurations().get("hdfs-site").getProperties();
assertEquals("Configurations should be rolled back to a:c ","c",configProperties.get("a"));
Config config4=new ConfigImpl("hdfs-site");
config4.setProperties(new HashMap(){
{
put("a","b");
}
}
);
ConfigGroup configGroup2=configGroupFactory.createNew(c1,"test group 2","HDFS","descr",Collections.singletonMap("hdfs-site",config4),Collections.emptyMap());
configGroup2.persist();
c1.addConfigGroup(configGroup2);
scvResponse=c1.createServiceConfigVersion("HDFS","admin","test note",configGroup2);
assertEquals("SCV 5 should be created",Long.valueOf(5),scvResponse.getVersion());
activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals("Three service config versions should be active, for default and test groups",3,activeServiceConfigVersions.get("HDFS").size());
assertEquals("Five total scvs",5,c1.getServiceConfigVersions().size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that an existing configuration can be successfully updated without
* creating a new version.
* @throws Exception
*/
@Test public void testClusterConfigMergingWithoutNewVersion() throws Exception {
createDefaultCluster();
Cluster cluster=clusters.getCluster("c1");
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
assertEquals(0,clusterEntity.getClusterConfigEntities().size());
final Config originalConfig=configFactory.createNew(cluster,"foo-site",new HashMap(){
{
put("one","two");
}
}
,new HashMap>());
originalConfig.setTag("version3");
originalConfig.persist();
cluster.addConfig(originalConfig);
ConfigGroup configGroup=configGroupFactory.createNew(cluster,"g1","t1","",new HashMap(){
{
put("foo-site",originalConfig);
}
}
,Collections.emptyMap());
configGroup.persist();
cluster.addConfigGroup(configGroup);
clusterEntity=clusterDAO.findByName("c1");
assertEquals(1,clusterEntity.getClusterConfigEntities().size());
Map configsByType=cluster.getConfigsByType("foo-site");
Config config=configsByType.entrySet().iterator().next().getValue();
Map properties=config.getProperties();
properties.put("three","four");
config.setProperties(properties);
config.persist(false);
clusterEntity=clusterDAO.findByName("c1");
assertEquals(1,clusterEntity.getClusterConfigEntities().size());
ClusterConfigEntity clusterConfigEntity=clusterEntity.getClusterConfigEntities().iterator().next();
assertTrue(clusterConfigEntity.getData().contains("one"));
assertTrue(clusterConfigEntity.getData().contains("two"));
assertTrue(clusterConfigEntity.getData().contains("three"));
assertTrue(clusterConfigEntity.getData().contains("four"));
cluster.refresh();
clusterEntity=clusterDAO.findByName("c1");
assertEquals(1,clusterEntity.getClusterConfigEntities().size());
clusterConfigEntity=clusterEntity.getClusterConfigEntities().iterator().next();
assertTrue(clusterConfigEntity.getData().contains("one"));
assertTrue(clusterConfigEntity.getData().contains("two"));
assertTrue(clusterConfigEntity.getData().contains("three"));
assertTrue(clusterConfigEntity.getData().contains("four"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetHostsDesiredConfigs() throws Exception {
createDefaultCluster();
Host host1=clusters.getHost("h1");
HostEntity hostEntity1=hostDAO.findByName("h1");
Map> propAttributes=new HashMap>();
propAttributes.put("final",new HashMap());
propAttributes.get("final").put("test","true");
Config config=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("test","test");
}
}
,propAttributes);
config.setTag("1");
host1.addDesiredConfig(c1.getClusterId(),true,"test",config);
Map> configs=c1.getAllHostsDesiredConfigs();
assertTrue(configs.containsKey(hostEntity1.getHostId()));
assertEquals(1,configs.get(hostEntity1.getHostId()).size());
List hostIds=new ArrayList();
hostIds.add(hostEntity1.getHostId());
configs=c1.getHostsDesiredConfigs(hostIds);
assertTrue(configs.containsKey(hostEntity1.getHostId()));
assertEquals(1,configs.get(hostEntity1.getHostId()).size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests removing configurations and configuration mappings by stack.
* @throws Exception
*/
@Test public void testRemoveConfigurations() throws Exception {
createDefaultCluster();
Cluster cluster=clusters.getCluster("c1");
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
StackId stackId=cluster.getCurrentStackVersion();
StackId newStackId=new StackId("HDP-2.0.6");
StackEntity currentStack=stackDAO.find(stackId.getStackName(),stackId.getStackVersion());
StackEntity newStack=stackDAO.find(newStackId.getStackName(),newStackId.getStackVersion());
Assert.assertFalse(stackId.equals(newStackId));
String configType="foo-type";
ClusterConfigEntity clusterConfig=new ClusterConfigEntity();
clusterConfig.setClusterEntity(clusterEntity);
clusterConfig.setConfigId(1L);
clusterConfig.setStack(currentStack);
clusterConfig.setTag("version-1");
clusterConfig.setData("{}");
clusterConfig.setType(configType);
clusterConfig.setTimestamp(1L);
clusterConfig.setVersion(1L);
clusterDAO.createConfig(clusterConfig);
clusterEntity.getClusterConfigEntities().add(clusterConfig);
clusterEntity=clusterDAO.merge(clusterEntity);
ClusterConfigEntity newClusterConfig=new ClusterConfigEntity();
newClusterConfig.setClusterEntity(clusterEntity);
newClusterConfig.setConfigId(2L);
newClusterConfig.setStack(newStack);
newClusterConfig.setTag("version-2");
newClusterConfig.setData("{}");
newClusterConfig.setType(configType);
newClusterConfig.setTimestamp(2L);
newClusterConfig.setVersion(2L);
clusterDAO.createConfig(newClusterConfig);
clusterEntity.getClusterConfigEntities().add(newClusterConfig);
clusterEntity=clusterDAO.merge(clusterEntity);
ClusterConfigMappingEntity configMapping=new ClusterConfigMappingEntity();
configMapping.setClusterEntity(clusterEntity);
configMapping.setCreateTimestamp(1L);
configMapping.setSelected(1);
configMapping.setTag("version-1");
configMapping.setType(configType);
configMapping.setUser("admin");
ClusterConfigMappingEntity newConfigMapping=new ClusterConfigMappingEntity();
newConfigMapping.setClusterEntity(clusterEntity);
newConfigMapping.setCreateTimestamp(2L);
newConfigMapping.setSelected(0);
newConfigMapping.setTag("version-2");
newConfigMapping.setType(configType);
newConfigMapping.setUser("admin");
clusterDAO.persistConfigMapping(configMapping);
clusterDAO.persistConfigMapping(newConfigMapping);
clusterEntity.getConfigMappingEntities().add(configMapping);
clusterEntity.getConfigMappingEntities().add(newConfigMapping);
clusterEntity=clusterDAO.merge(clusterEntity);
List clusterConfigs=clusterDAO.getAllConfigurations(cluster.getClusterId(),newStackId);
Assert.assertEquals(1,clusterConfigs.size());
cluster.removeConfigurations(newStackId);
clusterConfigs=clusterDAO.getAllConfigurations(cluster.getClusterId(),newStackId);
Assert.assertEquals(0,clusterConfigs.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testDeleteService() throws Exception {
createDefaultCluster();
c1.addService("MAPREDUCE").persist();
Service hdfs=c1.addService("HDFS");
hdfs.persist();
ServiceComponent nameNode=hdfs.addServiceComponent("NAMENODE");
nameNode.persist();
assertEquals(2,c1.getServices().size());
assertEquals(2,injector.getProvider(EntityManager.class).get().createQuery("SELECT service FROM ClusterServiceEntity service").getResultList().size());
c1.deleteService("HDFS");
assertEquals(1,c1.getServices().size());
assertEquals(1,injector.getProvider(EntityManager.class).get().createQuery("SELECT service FROM ClusterServiceEntity service").getResultList().size());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that hosts can be correctly transitioned into the "INSTALLING" state.
* This method also tests that hosts in MM will not be transitioned, as per
* the contract of{@link Cluster#transitionHostsToInstalling(ClusterVersionEntity)}.
* @throws Exception
*/
@Test public void testTransitionHostVersions() throws Exception {
createDefaultCluster();
StackId stackId=new StackId("HDP","0.2");
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,"0.2","admin",RepositoryVersionState.INSTALLING);
ClusterVersionEntity entityHDP2=null;
for ( ClusterVersionEntity entity : c1.getAllClusterVersions()) {
StackEntity repoVersionStackEntity=entity.getRepositoryVersion().getStack();
StackId repoVersionStackId=new StackId(repoVersionStackEntity);
if (repoVersionStackId.getStackName().equals("HDP") && repoVersionStackId.getStackVersion().equals("0.2")) {
entityHDP2=entity;
break;
}
}
assertNotNull(entityHDP2);
List hostVersionsH1Before=hostVersionDAO.findByClusterAndHost("c1","h1");
assertEquals(1,hostVersionsH1Before.size());
c1.transitionHostsToInstalling(entityHDP2);
List hostVersionsH1After=hostVersionDAO.findByClusterAndHost("c1","h1");
assertEquals(2,hostVersionsH1After.size());
boolean checked=false;
for ( HostVersionEntity entity : hostVersionsH1After) {
StackEntity repoVersionStackEntity=entity.getRepositoryVersion().getStack();
if (repoVersionStackEntity.getStackName().equals("HDP") && repoVersionStackEntity.getStackVersion().equals("0.2")) {
assertEquals(RepositoryVersionState.INSTALLING,entity.getState());
checked=true;
break;
}
}
assertTrue(checked);
c1.transitionHostsToInstalling(entityHDP2);
hostVersionsH1After=hostVersionDAO.findByClusterAndHost("c1","h1");
assertEquals(2,hostVersionsH1After.size());
checked=false;
for ( HostVersionEntity entity : hostVersionsH1After) {
StackEntity repoVersionStackEntity=entity.getRepositoryVersion().getStack();
if (repoVersionStackEntity.getStackName().equals("HDP") && repoVersionStackEntity.getStackVersion().equals("0.2")) {
assertEquals(RepositoryVersionState.INSTALLING,entity.getState());
checked=true;
break;
}
}
assertTrue(checked);
List hostVersionEntities=hostVersionDAO.findAll();
for ( HostVersionEntity hostVersionEntity : hostVersionEntities) {
hostVersionEntity.setState(RepositoryVersionState.INSTALL_FAILED);
hostVersionDAO.merge(hostVersionEntity);
}
hostVersionEntities=hostVersionDAO.findAll();
for ( HostVersionEntity hostVersionEntity : hostVersionEntities) {
assertEquals(RepositoryVersionState.INSTALL_FAILED,hostVersionEntity.getState());
}
Collection hosts=c1.getHosts();
Iterator iterator=hosts.iterator();
Host hostInMaintenanceMode=iterator.next();
Host hostNotInMaintenanceMode=iterator.next();
hostInMaintenanceMode.setMaintenanceState(c1.getClusterId(),MaintenanceState.ON);
c1.transitionHostsToInstalling(entityHDP2);
List hostInMaintModeVersions=hostVersionDAO.findByClusterAndHost("c1",hostInMaintenanceMode.getHostName());
List otherHostVersions=hostVersionDAO.findByClusterAndHost("c1",hostNotInMaintenanceMode.getHostName());
for ( HostVersionEntity hostVersionEntity : hostInMaintModeVersions) {
StackEntity repoVersionStackEntity=hostVersionEntity.getRepositoryVersion().getStack();
if (repoVersionStackEntity.getStackName().equals("HDP") && repoVersionStackEntity.getStackVersion().equals("0.2")) {
assertEquals(RepositoryVersionState.OUT_OF_SYNC,hostVersionEntity.getState());
}
}
for ( HostVersionEntity hostVersionEntity : otherHostVersions) {
StackEntity repoVersionStackEntity=hostVersionEntity.getRepositoryVersion().getStack();
if (repoVersionStackEntity.getStackName().equals("HDP") && repoVersionStackEntity.getStackVersion().equals("0.2")) {
assertEquals(RepositoryVersionState.INSTALLING,hostVersionEntity.getState());
}
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testServiceConfigVersions() throws Exception {
createDefaultCluster();
Config config1=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("x","y");
}
}
,new HashMap>());
config2.setTag("version2");
c1.addConfig(config1);
c1.addConfig(config2);
c1.addDesiredConfig("admin",Collections.singleton(config1));
List serviceConfigVersions=c1.getServiceConfigVersions();
Assert.assertNotNull(serviceConfigVersions);
Assert.assertEquals(1,serviceConfigVersions.size());
Map> activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals(1,activeServiceConfigVersions.size());
ServiceConfigVersionResponse hdfsResponse=activeServiceConfigVersions.get("HDFS").iterator().next();
Assert.assertEquals("HDFS",hdfsResponse.getServiceName());
Assert.assertEquals("c1",hdfsResponse.getClusterName());
Assert.assertEquals("admin",hdfsResponse.getUserName());
Assert.assertEquals("default",hdfsResponse.getGroupName());
Assert.assertEquals(Long.valueOf(-1),hdfsResponse.getGroupId());
Assert.assertEquals(Long.valueOf(1),hdfsResponse.getVersion());
c1.addDesiredConfig("admin",Collections.singleton(config2));
serviceConfigVersions=c1.getServiceConfigVersions();
Assert.assertNotNull(serviceConfigVersions);
Assert.assertEquals(2,serviceConfigVersions.size());
activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals(1,activeServiceConfigVersions.size());
hdfsResponse=activeServiceConfigVersions.get("HDFS").iterator().next();
Assert.assertEquals("HDFS",hdfsResponse.getServiceName());
Assert.assertEquals("c1",hdfsResponse.getClusterName());
Assert.assertEquals("admin",hdfsResponse.getUserName());
assertEquals(Long.valueOf(2),hdfsResponse.getVersion());
c1.setServiceConfigVersion("HDFS",1L,"admin","test_note");
serviceConfigVersions=c1.getServiceConfigVersions();
Assert.assertNotNull(serviceConfigVersions);
Assert.assertEquals(3,serviceConfigVersions.size());
activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals(1,activeServiceConfigVersions.size());
hdfsResponse=activeServiceConfigVersions.get("HDFS").iterator().next();
Assert.assertEquals("HDFS",hdfsResponse.getServiceName());
Assert.assertEquals("c1",hdfsResponse.getClusterName());
Assert.assertEquals("admin",hdfsResponse.getUserName());
assertEquals(Long.valueOf(3),hdfsResponse.getVersion());
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
/**
* Tests that {@link Cluster#applyLatestConfigurations(StackId)} sets the
* right configs to enabled.
* @throws Exception
*/
@Test public void testApplyLatestConfigurations() throws Exception {
createDefaultCluster();
Cluster cluster=clusters.getCluster("c1");
ClusterEntity clusterEntity=clusterDAO.findByName("c1");
StackId stackId=cluster.getCurrentStackVersion();
StackId newStackId=new StackId("HDP-2.0.6");
StackEntity currentStack=stackDAO.find(stackId.getStackName(),stackId.getStackVersion());
StackEntity newStack=stackDAO.find(newStackId.getStackName(),newStackId.getStackVersion());
Assert.assertFalse(stackId.equals(newStackId));
String configType="foo-type";
ClusterConfigEntity clusterConfig=new ClusterConfigEntity();
clusterConfig.setClusterEntity(clusterEntity);
clusterConfig.setConfigId(1L);
clusterConfig.setStack(currentStack);
clusterConfig.setTag("version-1");
clusterConfig.setData("{}");
clusterConfig.setType(configType);
clusterConfig.setTimestamp(1L);
clusterConfig.setVersion(1L);
clusterDAO.createConfig(clusterConfig);
clusterEntity.getClusterConfigEntities().add(clusterConfig);
clusterEntity=clusterDAO.merge(clusterEntity);
ClusterConfigEntity newClusterConfig=new ClusterConfigEntity();
newClusterConfig.setClusterEntity(clusterEntity);
newClusterConfig.setConfigId(2L);
newClusterConfig.setStack(newStack);
newClusterConfig.setTag("version-2");
newClusterConfig.setData("{}");
newClusterConfig.setType(configType);
newClusterConfig.setTimestamp(2L);
newClusterConfig.setVersion(2L);
clusterDAO.createConfig(newClusterConfig);
clusterEntity.getClusterConfigEntities().add(newClusterConfig);
clusterEntity=clusterDAO.merge(clusterEntity);
ClusterConfigMappingEntity configMapping=new ClusterConfigMappingEntity();
configMapping.setClusterEntity(clusterEntity);
configMapping.setCreateTimestamp(1L);
configMapping.setSelected(1);
configMapping.setTag("version-1");
configMapping.setType(configType);
configMapping.setUser("admin");
ClusterConfigMappingEntity newConfigMapping=new ClusterConfigMappingEntity();
newConfigMapping.setClusterEntity(clusterEntity);
newConfigMapping.setCreateTimestamp(2L);
newConfigMapping.setSelected(0);
newConfigMapping.setTag("version-2");
newConfigMapping.setType(configType);
newConfigMapping.setUser("admin");
clusterDAO.persistConfigMapping(configMapping);
clusterDAO.persistConfigMapping(newConfigMapping);
clusterEntity.getConfigMappingEntities().add(configMapping);
clusterEntity.getConfigMappingEntities().add(newConfigMapping);
clusterEntity=clusterDAO.merge(clusterEntity);
Collection clusterConfigMappings=clusterEntity.getConfigMappingEntities();
Assert.assertEquals(2,clusterConfigMappings.size());
for ( ClusterConfigMappingEntity clusterConfigMapping : clusterConfigMappings) {
if (clusterConfigMapping.getTag().equals("version-1")) {
Assert.assertEquals(1,clusterConfigMapping.isSelected());
}
else {
Assert.assertEquals(0,clusterConfigMapping.isSelected());
}
}
cluster.applyLatestConfigurations(newStackId);
clusterEntity=clusterDAO.findByName("c1");
clusterConfigMappings=clusterEntity.getConfigMappingEntities();
Assert.assertEquals(2,clusterConfigMappings.size());
for ( ClusterConfigMappingEntity clusterConfigMapping : clusterConfigMappings) {
if (clusterConfigMapping.getTag().equals("version-1")) {
Assert.assertEquals(0,clusterConfigMapping.isSelected());
}
else {
Assert.assertEquals(1,clusterConfigMapping.isSelected());
}
}
}
InternalCallVerifier EqualityVerifier
@Test public void testProvisioningState() throws Exception {
createDefaultCluster();
c1.setProvisioningState(State.INIT);
Assert.assertEquals(State.INIT,c1.getProvisioningState());
c1.setProvisioningState(State.INSTALLED);
Assert.assertEquals(State.INSTALLED,c1.getProvisioningState());
}
InternalCallVerifier EqualityVerifier NullVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testClusterRecovery() throws AmbariException {
ClusterEntity entity=createDummyData();
ClusterStateEntity clusterStateEntity=new ClusterStateEntity();
clusterStateEntity.setCurrentStack(entity.getDesiredStack());
entity.setClusterStateEntity(clusterStateEntity);
ClusterImpl cluster=new ClusterImpl(entity,injector);
Service service=cluster.getService("HDFS");
Assert.assertEquals("HDFS",service.getName());
Map services=cluster.getServices();
Assert.assertNotNull(services.get("HDFS"));
}
APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testBootstrapHostVersion() throws Exception {
String clusterName="c1";
String v1="2.2.0-123";
StackId stackId=new StackId("HDP-2.2.0");
RepositoryVersionEntity rv1=helper.getOrCreateRepositoryVersion(stackId,v1);
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","5.9");
Cluster cluster=createClusterForRU(clusterName,stackId,hostAttributes);
Host deadHost=cluster.getHosts().iterator().next();
deadHost.setState(HostState.UNHEALTHY);
int versionedComponentCount=0;
List hostComponentStates=hostComponentStateDAO.findAll();
for (int i=0; i < hostComponentStates.size(); i++) {
HostComponentStateEntity hce=hostComponentStates.get(i);
ComponentInfo compInfo=metaInfo.getComponent(stackId.getStackName(),stackId.getStackVersion(),hce.getServiceName(),hce.getComponentName());
if (hce.getHostName().equals(deadHost.getHostName())) {
continue;
}
if (compInfo.isVersionAdvertised()) {
hce.setVersion(v1);
hostComponentStateDAO.merge(hce);
versionedComponentCount++;
}
Service svc=cluster.getService(hce.getServiceName());
ServiceComponent svcComp=svc.getServiceComponent(hce.getComponentName());
ServiceComponentHost scHost=svcComp.getServiceComponentHost(hce.getHostName());
scHost.recalculateHostVersionState();
cluster.recalculateClusterVersionState(rv1);
Collection clusterVersions=cluster.getAllClusterVersions();
if (versionedComponentCount > 0) {
RepositoryVersionEntity repositoryVersion=repositoryVersionDAO.findByStackAndVersion(stackId,v1);
Assert.assertNotNull(repositoryVersion);
Assert.assertTrue(clusterVersions != null && clusterVersions.size() == 1);
if (versionedComponentCount == 1 && i < (hostComponentStates.size() - 1)) {
Assert.assertEquals(clusterVersions.iterator().next().getState(),RepositoryVersionState.CURRENT);
}
}
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSingleServiceVersionForMultipleConfigs() throws Exception {
createDefaultCluster();
Config config1=configFactory.createNew(c1,"hdfs-site",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
config1.setTag("version1");
Config config2=configFactory.createNew(c1,"core-site",new HashMap(){
{
put("x","y");
}
}
,new HashMap>());
config2.setTag("version2");
c1.addConfig(config1);
c1.addConfig(config2);
Set configs=new HashSet();
configs.add(config1);
configs.add(config2);
c1.addDesiredConfig("admin",configs);
List serviceConfigVersions=c1.getServiceConfigVersions();
Assert.assertNotNull(serviceConfigVersions);
Assert.assertEquals(1,serviceConfigVersions.size());
Assert.assertEquals(Long.valueOf(1),serviceConfigVersions.get(0).getVersion());
Assert.assertEquals(2,c1.getDesiredConfigs().size());
Assert.assertEquals("version1",c1.getDesiredConfigByType("hdfs-site").getTag());
Assert.assertEquals("version2",c1.getDesiredConfigByType("core-site").getTag());
Map> activeServiceConfigVersions=c1.getActiveServiceConfigVersions();
Assert.assertEquals(1,activeServiceConfigVersions.size());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetServiceComponentHosts() throws Exception {
createDefaultCluster();
Service s=serviceFactory.createNew(c1,"HDFS");
c1.addService(s);
s.persist();
ServiceComponent sc=serviceComponentFactory.createNew(s,"NAMENODE");
s.addServiceComponent(sc);
sc.persist();
ServiceComponentHost sch=serviceComponentHostFactory.createNew(sc,"h1");
sc.addServiceComponentHost(sch);
sch.persist();
List scHosts=c1.getServiceComponentHosts("h1");
Assert.assertEquals(1,scHosts.size());
Iterator iterator=scHosts.iterator();
try {
while (iterator.hasNext()) {
iterator.next();
Service s1=serviceFactory.createNew(c1,"PIG");
c1.addService(s1);
s1.persist();
ServiceComponent sc1=serviceComponentFactory.createNew(s1,"PIG");
s1.addServiceComponent(sc1);
sc1.persist();
ServiceComponentHost sch1=serviceComponentHostFactory.createNew(sc1,"h1");
sc1.addServiceComponentHost(sch1);
sch1.persist();
}
}
catch ( ConcurrentModificationException e) {
Assert.assertTrue("Failed to work concurrently with sch",false);
}
scHosts=c1.getServiceComponentHosts("h1");
Assert.assertEquals(2,scHosts.size());
}
InternalCallVerifier EqualityVerifier
@Test public void testTransitionHostVersionState_OutOfSync_BlankCurrent() throws Exception {
StackId stackId=new StackId("HDP-2.0.5");
String clusterName="c1";
clusters.addCluster(clusterName,stackId);
final Cluster c1=clusters.getCluster(clusterName);
Assert.assertEquals(clusterName,c1.getClusterName());
Assert.assertEquals(1,c1.getClusterId());
clusters.addHost("h-1");
clusters.addHost("h-2");
String h3="h-3";
clusters.addHost(h3);
for ( String hostName : new String[]{"h-1","h-2",h3}) {
Host h=clusters.getHost(hostName);
h.setIPv4("ipv4");
h.setIPv6("ipv6");
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","5.9");
h.setHostAttributes(hostAttributes);
h.persist();
}
String v1="2.0.5-1";
String v2="2.0.5-2";
c1.setDesiredStackVersion(stackId);
RepositoryVersionEntity rve1=helper.getOrCreateRepositoryVersion(stackId,v1);
RepositoryVersionEntity rve2=helper.getOrCreateRepositoryVersion(stackId,v2);
c1.setCurrentStackVersion(stackId);
c1.createClusterVersion(stackId,v1,"admin",RepositoryVersionState.UPGRADING);
c1.transitionClusterVersion(stackId,v1,RepositoryVersionState.CURRENT);
clusters.mapHostToCluster("h-1",clusterName);
clusters.mapHostToCluster("h-2",clusterName);
ClusterVersionDAOMock.failOnCurrentVersionState=false;
Service service=c1.addService("ZOOKEEPER");
ServiceComponent sc=service.addServiceComponent("ZOOKEEPER_SERVER");
sc.addServiceComponentHost("h-1");
sc.addServiceComponentHost("h-2");
c1.createClusterVersion(stackId,v2,"admin",RepositoryVersionState.INSTALLING);
c1.transitionClusterVersion(stackId,v2,RepositoryVersionState.INSTALLED);
c1.transitionClusterVersion(stackId,v2,RepositoryVersionState.OUT_OF_SYNC);
clusters.mapHostToCluster(h3,clusterName);
HostEntity hostEntity3=mock(HostEntity.class);
when(hostEntity3.getHostName()).thenReturn(h3);
HostVersionDAO hostVersionDAOMock=mock(HostVersionDAO.class);
Field field=ClusterImpl.class.getDeclaredField("hostVersionDAO");
field.setAccessible(true);
field.set(c1,hostVersionDAOMock);
ArgumentCaptor hostVersionCaptor=ArgumentCaptor.forClass(HostVersionEntity.class);
ClusterVersionDAOMock.mockedClusterVersions=new ArrayList(){
{
addAll(c1.getAllClusterVersions());
}
}
;
c1.transitionHostVersionState(hostEntity3,rve1,stackId);
ClusterVersionDAOMock.mockedClusterVersions=null;
verify(hostVersionDAOMock).merge(hostVersionCaptor.capture());
assertEquals(hostVersionCaptor.getValue().getState(),RepositoryVersionState.CURRENT);
}
APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Comprehensive test for transitionHostVersion and recalculateClusterVersion.
* It creates a cluster with 3 hosts and 3 services, one of which does not advertise a version.
* It then verifies that all 3 hosts have a version of CURRENT, and so does the cluster.
* It then adds one more host with a component, so its HostVersion will initialize in CURRENT.
* Next, it distributes a repo so that it is INSTALLED on the 4 hosts.
* It then adds one more host, whose HostVersion will be OUT_OF_SYNC for the new repo.
* After redistributing bits again, it simulates an RU.
* Finally, some of the hosts will end up with a HostVersion in UPGRADED, and others still in INSTALLED.
* @throws Exception
*/
@Test public void testTransitionHostVersionAdvanced() throws Exception {
String clusterName="c1";
String v1="2.2.0-123";
StackId stackId=new StackId("HDP-2.2.0");
RepositoryVersionEntity rv1=helper.getOrCreateRepositoryVersion(stackId,v1);
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","5.9");
Cluster cluster=createClusterForRU(clusterName,stackId,hostAttributes);
int versionedComponentCount=0;
List hostComponentStates=hostComponentStateDAO.findAll();
for (int i=0; i < hostComponentStates.size(); i++) {
HostComponentStateEntity hce=hostComponentStates.get(i);
ComponentInfo compInfo=metaInfo.getComponent(stackId.getStackName(),stackId.getStackVersion(),hce.getServiceName(),hce.getComponentName());
if (compInfo.isVersionAdvertised()) {
hce.setVersion(v1);
hostComponentStateDAO.merge(hce);
versionedComponentCount++;
}
Service svc=cluster.getService(hce.getServiceName());
ServiceComponent svcComp=svc.getServiceComponent(hce.getComponentName());
ServiceComponentHost scHost=svcComp.getServiceComponentHost(hce.getHostName());
scHost.recalculateHostVersionState();
cluster.recalculateClusterVersionState(rv1);
Collection clusterVersions=cluster.getAllClusterVersions();
if (versionedComponentCount > 0) {
RepositoryVersionEntity repositoryVersion=repositoryVersionDAO.findByStackAndVersion(stackId,v1);
Assert.assertNotNull(repositoryVersion);
Assert.assertTrue(clusterVersions != null && clusterVersions.size() == 1);
if (versionedComponentCount == 1 && i < (hostComponentStates.size() - 1)) {
Assert.assertEquals(clusterVersions.iterator().next().getState(),RepositoryVersionState.UPGRADING);
}
if (i == hostComponentStates.size() - 1) {
Assert.assertEquals(clusterVersions.iterator().next().getState(),RepositoryVersionState.CURRENT);
}
}
}
addHost("h-4",hostAttributes);
clusters.mapHostToCluster("h-4",clusterName);
Service svc2=cluster.getService("ZOOKEEPER");
Service svc3=cluster.getService("GANGLIA");
ServiceComponent sc2CompA=svc2.getServiceComponent("ZOOKEEPER_SERVER");
ServiceComponent sc2CompB=svc2.getServiceComponent("ZOOKEEPER_CLIENT");
ServiceComponent sc3CompB=svc3.getServiceComponent("GANGLIA_MONITOR");
ServiceComponentHost schHost4Serv2CompA=serviceComponentHostFactory.createNew(sc2CompA,"h-4");
ServiceComponentHost schHost4Serv2CompB=serviceComponentHostFactory.createNew(sc2CompB,"h-4");
ServiceComponentHost schHost4Serv3CompB=serviceComponentHostFactory.createNew(sc3CompB,"h-4");
sc2CompA.addServiceComponentHost(schHost4Serv2CompA);
sc2CompB.addServiceComponentHost(schHost4Serv2CompB);
sc3CompB.addServiceComponentHost(schHost4Serv3CompB);
schHost4Serv2CompA.persist();
schHost4Serv2CompB.persist();
schHost4Serv3CompB.persist();
simulateStackVersionListener(stackId,v1,cluster,hostComponentStateDAO.findByHost("h-4"));
Collection hostVersions=hostVersionDAO.findAll();
Assert.assertEquals(hostVersions.size(),clusters.getHosts().size());
HostVersionEntity h4Version1=hostVersionDAO.findByClusterStackVersionAndHost(clusterName,stackId,v1,"h-4");
Assert.assertNotNull(h4Version1);
Assert.assertEquals(h4Version1.getState(),RepositoryVersionState.CURRENT);
String v2="2.2.0-456";
RepositoryVersionEntity rv2=helper.getOrCreateRepositoryVersion(stackId,v2);
for ( String hostName : clusters.getHostsForCluster(clusterName).keySet()) {
HostEntity host=hostDAO.findByName(hostName);
HostVersionEntity hve=new HostVersionEntity(host,rv2,RepositoryVersionState.INSTALLED);
hostVersionDAO.create(hve);
}
cluster.createClusterVersion(stackId,v2,"admin",RepositoryVersionState.INSTALLING);
cluster.transitionClusterVersion(stackId,v2,RepositoryVersionState.INSTALLED);
ClusterVersionEntity cv2=clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,stackId,v2);
Assert.assertNotNull(cv2);
Assert.assertEquals(cv2.getState(),RepositoryVersionState.INSTALLED);
addHost("h-5",hostAttributes);
clusters.mapHostToCluster("h-5",clusterName);
ServiceComponentHost schHost5Serv3CompB=serviceComponentHostFactory.createNew(sc3CompB,"h-5");
sc3CompB.addServiceComponentHost(schHost5Serv3CompB);
schHost5Serv3CompB.persist();
HostVersionEntity h5Version2=hostVersionDAO.findByClusterStackVersionAndHost(clusterName,stackId,v2,"h-5");
Assert.assertNotNull(h5Version2);
Assert.assertEquals(h5Version2.getState(),RepositoryVersionState.OUT_OF_SYNC);
h5Version2.setState(RepositoryVersionState.INSTALLED);
hostVersionDAO.merge(h5Version2);
versionedComponentCount=0;
hostComponentStates=hostComponentStateDAO.findAll();
for (int i=0; i < hostComponentStates.size(); i++) {
HostComponentStateEntity hce=hostComponentStates.get(i);
ComponentInfo compInfo=metaInfo.getComponent(stackId.getStackName(),stackId.getStackVersion(),hce.getServiceName(),hce.getComponentName());
if (compInfo.isVersionAdvertised()) {
hce.setVersion(v2);
hostComponentStateDAO.merge(hce);
versionedComponentCount++;
}
Service svc=cluster.getService(hce.getServiceName());
ServiceComponent svcComp=svc.getServiceComponent(hce.getComponentName());
ServiceComponentHost scHost=svcComp.getServiceComponentHost(hce.getHostName());
scHost.recalculateHostVersionState();
cluster.recalculateClusterVersionState(rv2);
Collection clusterVersions=cluster.getAllClusterVersions();
if (versionedComponentCount > 0) {
RepositoryVersionEntity repositoryVersion=repositoryVersionDAO.findByStackAndVersion(stackId,v2);
Assert.assertNotNull(repositoryVersion);
Assert.assertTrue(clusterVersions != null && clusterVersions.size() == 2);
if (versionedComponentCount == 1 && i < (hostComponentStates.size() - 1)) {
cv2=clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,stackId,v2);
Assert.assertEquals(cv2.getState(),RepositoryVersionState.UPGRADING);
}
}
}
cv2=clusterVersionDAO.findByClusterAndStackAndVersion(clusterName,stackId,v2);
Assert.assertEquals(cv2.getState(),RepositoryVersionState.UPGRADING);
Collection v2HostVersions=hostVersionDAO.findByClusterStackAndVersion(clusterName,stackId,v2);
Assert.assertEquals(v2HostVersions.size(),clusters.getHostsForCluster(clusterName).size());
for ( HostVersionEntity hve : v2HostVersions) {
if (hve.getHostName().equals("h-3") || hve.getHostName().equals("h-5")) {
Assert.assertEquals(hve.getState(),RepositoryVersionState.INSTALLED);
}
else {
Assert.assertEquals(hve.getState(),RepositoryVersionState.UPGRADED);
}
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetAndSetConfigs() throws Exception {
createDefaultCluster();
Map> c1PropAttributes=new HashMap>();
c1PropAttributes.put("final",new HashMap());
c1PropAttributes.get("final").put("a","true");
Map> c2PropAttributes=new HashMap>();
c2PropAttributes.put("final",new HashMap());
c2PropAttributes.get("final").put("x","true");
Config config1=configFactory.createNew(c1,"global",new HashMap(){
{
put("a","b");
}
}
,c1PropAttributes);
config1.setTag("version1");
Config config2=configFactory.createNew(c1,"global",new HashMap(){
{
put("x","y");
}
}
,c2PropAttributes);
config2.setTag("version2");
Config config3=configFactory.createNew(c1,"core-site",new HashMap(){
{
put("x","y");
}
}
,new HashMap>());
config3.setTag("version2");
c1.addConfig(config1);
c1.addConfig(config2);
c1.addConfig(config3);
c1.addDesiredConfig("_test",Collections.singleton(config1));
Config res=c1.getDesiredConfigByType("global");
Assert.assertNotNull("Expected non-null config",res);
Assert.assertEquals("true",res.getPropertiesAttributes().get("final").get("a"));
res=c1.getDesiredConfigByType("core-site");
Assert.assertNull("Expected null config",res);
c1.addDesiredConfig("_test",Collections.singleton(config2));
res=c1.getDesiredConfigByType("global");
Assert.assertEquals("Expected version tag to be 'version2'","version2",res.getTag());
Assert.assertEquals("true",res.getPropertiesAttributes().get("final").get("x"));
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddAndGetServices() throws Exception {
createDefaultCluster();
Service s1=serviceFactory.createNew(c1,"HDFS");
Service s2=serviceFactory.createNew(c1,"MAPREDUCE");
c1.addService(s1);
c1.addService(s2);
s1.persist();
s2.persist();
Service s3=serviceFactory.createNew(c1,"MAPREDUCE");
try {
c1.addService(s3);
fail("Expected error on adding dup service");
}
catch ( Exception e) {
}
Service s=c1.getService("HDFS");
Assert.assertNotNull(s);
Assert.assertEquals("HDFS",s.getName());
Assert.assertEquals(c1.getClusterId(),s.getClusterId());
try {
c1.getService("HBASE");
fail("Expected error for unknown service");
}
catch ( Exception e) {
}
Map services=c1.getServices();
Assert.assertEquals(2,services.size());
Assert.assertTrue(services.containsKey("HDFS"));
Assert.assertTrue(services.containsKey("MAPREDUCE"));
}
InternalCallVerifier EqualityVerifier
@Test public void testConvertToResponse() throws Exception {
createDefaultCluster();
ClusterResponse r=c1.convertToResponse();
Assert.assertEquals(c1.getClusterId(),r.getClusterId().longValue());
Assert.assertEquals(c1.getClusterName(),r.getClusterName());
Assert.assertEquals(Integer.valueOf(2),r.getTotalHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getAlertStatusHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getHealthyStatusHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getUnhealthyStatusHosts());
Assert.assertEquals(2,r.getClusterHealthReport().getUnknownStatusHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getStaleConfigsHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getMaintenanceStateHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getHealthyStateHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getHeartbeatLostStateHosts());
Assert.assertEquals(2,r.getClusterHealthReport().getInitStateHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getUnhealthyStateHosts());
clusters.addHost("h3");
Host host=clusters.getHost("h3");
host.setIPv4("ipv4");
host.setIPv6("ipv6");
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","5.9");
host.setHostAttributes(hostAttributes);
host.setState(HostState.HEALTHY);
host.setHealthStatus(new HostHealthStatus(HostHealthStatus.HealthStatus.HEALTHY,""));
host.setStatus(host.getHealthStatus().getHealthStatus().name());
host.persist();
c1.setDesiredStackVersion(new StackId("HDP-2.0.6"));
clusters.mapHostToCluster("h3","c1");
r=c1.convertToResponse();
Assert.assertEquals(Integer.valueOf(3),r.getTotalHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getAlertStatusHosts());
Assert.assertEquals(1,r.getClusterHealthReport().getHealthyStatusHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getUnhealthyStatusHosts());
Assert.assertEquals(2,r.getClusterHealthReport().getUnknownStatusHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getStaleConfigsHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getMaintenanceStateHosts());
Assert.assertEquals(1,r.getClusterHealthReport().getHealthyStateHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getHeartbeatLostStateHosts());
Assert.assertEquals(2,r.getClusterHealthReport().getInitStateHosts());
Assert.assertEquals(0,r.getClusterHealthReport().getUnhealthyStateHosts());
StringBuilder sb=new StringBuilder();
c1.debugDump(sb);
}
Class: org.apache.ambari.server.state.cluster.ClustersImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetSessionAttributes() throws Exception {
Map attributes=new HashMap();
attributes.put("foo","bar");
Cluster cluster=createMock(Cluster.class);
ClustersImpl clusters=createMockBuilder(ClustersImpl.class).addMockedMethod("findCluster",String.class).createMock();
expect(clusters.findCluster("c1")).andReturn(cluster);
expect(cluster.getSessionAttributes()).andReturn(attributes);
replay(clusters,cluster);
assertEquals(attributes,clusters.getSessionAttributes("c1"));
verify(clusters,cluster);
}
Class: org.apache.ambari.server.state.cluster.ClustersTest UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testClusterHostMapping() throws AmbariException {
String c1="c1";
String c2="c2";
String h1="h1";
String h2="h2";
String h3="h3";
String h4="h4";
try {
clusters.mapHostToCluster(h1,c1);
fail("Expected exception for invalid cluster/host");
}
catch ( Exception e) {
}
StackId stackId=new StackId("HDP-0.1");
clusters.addCluster(c1,stackId);
clusters.addCluster(c2,stackId);
Cluster cluster1=clusters.getCluster(c1);
Cluster cluster2=clusters.getCluster(c2);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertNotNull(clusters.getCluster(c2));
cluster1.setDesiredStackVersion(stackId);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
cluster1.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
cluster2.setDesiredStackVersion(stackId);
cluster2.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
cluster2.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
try {
clusters.mapHostToCluster(h1,c1);
fail("Expected exception for invalid host");
}
catch ( Exception e) {
}
clusters.addHost(h1);
clusters.addHost(h2);
clusters.addHost(h3);
Assert.assertNotNull(clusters.getHost(h1));
setOsFamily(clusters.getHost(h1),"redhat","6.4");
setOsFamily(clusters.getHost(h2),"redhat","5.9");
setOsFamily(clusters.getHost(h3),"redhat","6.4");
clusters.getHost(h1).persist();
clusters.getHost(h2).persist();
clusters.getHost(h3).persist();
try {
clusters.getClustersForHost(h4);
fail("Expected exception for invalid host");
}
catch ( HostNotFoundException e) {
}
Set c=clusters.getClustersForHost(h3);
Assert.assertEquals(0,c.size());
clusters.mapHostToCluster(h1,c1);
clusters.mapHostToCluster(h2,c1);
try {
clusters.mapHostToCluster(h1,c1);
fail("Expected exception for duplicate");
}
catch ( DuplicateResourceException e) {
}
Cluster c3=(Cluster)clusters.getClustersForHost(h1).toArray()[0];
Cluster c4=(Cluster)clusters.getClustersForHost(h2).toArray()[0];
Assert.assertEquals(c3,c4);
Set hostnames=new HashSet();
hostnames.add(h1);
hostnames.add(h2);
clusters.mapHostsToCluster(hostnames,c2);
c=clusters.getClustersForHost(h1);
Assert.assertEquals(2,c.size());
c=clusters.getClustersForHost(h2);
Assert.assertEquals(2,c.size());
Map hostsForC1=clusters.getHostsForCluster(c1);
Assert.assertEquals(2,hostsForC1.size());
Assert.assertTrue(hostsForC1.containsKey(h1));
Assert.assertTrue(hostsForC1.containsKey(h2));
Assert.assertNotNull(hostsForC1.get(h1));
Assert.assertNotNull(hostsForC1.get(h2));
}
UtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddAndGetHost() throws AmbariException {
String h1="h1";
String h2="h2";
String h3="h3";
clusters.addHost(h1);
try {
clusters.addHost(h1);
fail("Expected exception on duplicate host entry");
}
catch ( Exception e) {
}
clusters.addHost(h2);
clusters.addHost(h3);
List hosts=clusters.getHosts();
Assert.assertEquals(3,hosts.size());
Assert.assertNotNull(clusters.getHost(h1));
Assert.assertNotNull(clusters.getHost(h2));
Assert.assertNotNull(clusters.getHost(h3));
Host h=clusters.getHost(h2);
Assert.assertNotNull(h);
try {
clusters.getHost("foo");
fail("Expected error for unknown host");
}
catch ( HostNotFoundException e) {
}
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddAndGetCluster() throws AmbariException {
StackId stackId=new StackId("HDP-2.1.1");
String c1="foo";
String c2="foo";
clusters.addCluster(c1,stackId);
try {
clusters.addCluster(c1,stackId);
fail("Exception should be thrown on invalid add");
}
catch ( AmbariException e) {
}
try {
clusters.addCluster(c2,stackId);
fail("Exception should be thrown on invalid add");
}
catch ( AmbariException e) {
}
c2="foo2";
clusters.addCluster(c2,stackId);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertNotNull(clusters.getCluster(c2));
Assert.assertEquals(c1,clusters.getCluster(c1).getClusterName());
Assert.assertEquals(c2,clusters.getCluster(c2).getClusterName());
Map verifyClusters=clusters.getClusters();
Assert.assertTrue(verifyClusters.containsKey(c1));
Assert.assertTrue(verifyClusters.containsKey(c2));
Assert.assertNotNull(verifyClusters.get(c1));
Assert.assertNotNull(verifyClusters.get(c2));
Cluster c=clusters.getCluster(c1);
c.setClusterName("foobar");
long cId=c.getClusterId();
Cluster changed=clusters.getCluster("foobar");
Assert.assertNotNull(changed);
Assert.assertEquals(cId,changed.getClusterId());
Assert.assertEquals("foobar",clusters.getClusterById(cId).getClusterName());
}
InternalCallVerifier NullVerifier
@Test public void testDebugDump() throws AmbariException {
String c1="c1";
String c2="c2";
String h1="h1";
String h2="h2";
String h3="h3";
StackId stackId=new StackId("HDP-0.1");
clusters.addCluster(c1,stackId);
clusters.addCluster(c2,stackId);
Cluster cluster1=clusters.getCluster(c1);
Cluster cluster2=clusters.getCluster(c2);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertNotNull(clusters.getCluster(c2));
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
cluster1.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
cluster2.setDesiredStackVersion(stackId);
cluster2.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
cluster2.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
clusters.addHost(h1);
clusters.addHost(h2);
clusters.addHost(h3);
setOsFamily(clusters.getHost(h1),"redhat","6.4");
setOsFamily(clusters.getHost(h2),"redhat","5.9");
setOsFamily(clusters.getHost(h3),"redhat","6.4");
clusters.getHost(h1).persist();
clusters.getHost(h2).persist();
clusters.getHost(h3).persist();
clusters.mapHostToCluster(h1,c1);
clusters.mapHostToCluster(h2,c1);
StringBuilder sb=new StringBuilder();
clusters.debugDump(sb);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteCluster() throws Exception {
String c1="c1";
final String h1="h1";
final String h2="h2";
StackId stackId=new StackId("HDP-0.1");
clusters.addCluster(c1,stackId);
Cluster cluster=clusters.getCluster(c1);
cluster.setDesiredStackVersion(stackId);
cluster.setCurrentStackVersion(stackId);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
cluster.transitionClusterVersion(stackId,stackId.getStackVersion(),RepositoryVersionState.CURRENT);
final Config config1=injector.getInstance(ConfigFactory.class).createNew(cluster,"t1",new HashMap(){
{
put("prop1","val1");
}
}
,new HashMap>());
config1.setTag("1");
config1.persist();
Config config2=injector.getInstance(ConfigFactory.class).createNew(cluster,"t1",new HashMap(){
{
put("prop2","val2");
}
}
,new HashMap>());
config2.setTag("2");
config2.persist();
cluster.addDesiredConfig("_test",Collections.singleton(config1));
clusters.addHost(h1);
clusters.addHost(h2);
Host host1=clusters.getHost(h1);
Host host2=clusters.getHost(h2);
setOsFamily(clusters.getHost(h1),"centos","5.9");
setOsFamily(clusters.getHost(h2),"centos","5.9");
host1.persist();
host2.persist();
clusters.mapHostsToCluster(new HashSet(){
{
addAll(Arrays.asList(h1,h2));
}
}
,c1);
host1.addDesiredConfig(cluster.getClusterId(),true,"_test",config2);
host1.persist();
Service hdfs=cluster.addService("HDFS");
hdfs.persist();
Assert.assertNotNull(injector.getInstance(ClusterServiceDAO.class).findByClusterAndServiceNames(c1,"HDFS"));
ServiceComponent nameNode=hdfs.addServiceComponent("NAMENODE");
nameNode.persist();
ServiceComponent dataNode=hdfs.addServiceComponent("DATANODE");
dataNode.persist();
ServiceComponent serviceCheckNode=hdfs.addServiceComponent("HDFS_CLIENT");
serviceCheckNode.persist();
ServiceComponentHost nameNodeHost=nameNode.addServiceComponentHost(h1);
nameNodeHost.persist();
HostEntity nameNodeHostEntity=hostDAO.findByName(nameNodeHost.getHostName());
Assert.assertNotNull(nameNodeHostEntity);
ServiceComponentHost dataNodeHost=dataNode.addServiceComponentHost(h2);
dataNodeHost.persist();
ServiceComponentHost serviceCheckNodeHost=serviceCheckNode.addServiceComponentHost(h2);
serviceCheckNodeHost.persist();
serviceCheckNodeHost.setState(State.UNKNOWN);
HostComponentDesiredStateEntityPK hkdspk=new HostComponentDesiredStateEntityPK();
hkdspk.setClusterId(nameNodeHost.getClusterId());
hkdspk.setHostId(nameNodeHostEntity.getHostId());
hkdspk.setServiceName(nameNodeHost.getServiceName());
hkdspk.setComponentName(nameNodeHost.getServiceComponentName());
Assert.assertNotNull(injector.getInstance(HostComponentStateDAO.class).findByIndex(nameNodeHost.getClusterId(),nameNodeHost.getServiceName(),nameNodeHost.getServiceComponentName(),nameNodeHostEntity.getHostId()));
Assert.assertNotNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByPK(hkdspk));
Assert.assertEquals(2,injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigEntity config").getResultList().size());
Assert.assertEquals(1,injector.getProvider(EntityManager.class).get().createQuery("SELECT state FROM ClusterStateEntity state").getResultList().size());
Assert.assertEquals(1,injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigMappingEntity config").getResultList().size());
Blueprint bp=createNiceMock(Blueprint.class);
expect(bp.getName()).andReturn("TestBluePrint").anyTimes();
Configuration clusterConfig=new Configuration(Maps.>newHashMap(),Maps.>>newHashMap());
Map hostGroups=Maps.newHashMap();
TopologyRequest topologyRequest=createNiceMock(TopologyRequest.class);
expect(topologyRequest.getType()).andReturn(TopologyRequest.Type.PROVISION).anyTimes();
expect(topologyRequest.getBlueprint()).andReturn(bp).anyTimes();
expect(topologyRequest.getClusterId()).andReturn(cluster.getClusterId()).anyTimes();
expect(topologyRequest.getConfiguration()).andReturn(clusterConfig).anyTimes();
expect(topologyRequest.getDescription()).andReturn("Test description").anyTimes();
expect(topologyRequest.getHostGroupInfo()).andReturn(hostGroups).anyTimes();
replay(bp,topologyRequest);
persistedState.persistTopologyRequest(topologyRequest);
Assert.assertEquals(1,topologyRequestDAO.findByClusterId(cluster.getClusterId()).size());
clusters.deleteCluster(c1);
Assert.assertEquals(2,hostDAO.findAll().size());
Assert.assertNull(injector.getInstance(HostComponentStateDAO.class).findByIndex(nameNodeHost.getClusterId(),nameNodeHost.getServiceName(),nameNodeHost.getServiceComponentName(),nameNodeHostEntity.getHostId()));
Assert.assertNull(injector.getInstance(HostComponentDesiredStateDAO.class).findByPK(hkdspk));
Assert.assertEquals(0,injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigEntity config").getResultList().size());
Assert.assertEquals(0,injector.getProvider(EntityManager.class).get().createQuery("SELECT state FROM ClusterStateEntity state").getResultList().size());
Assert.assertEquals(0,injector.getProvider(EntityManager.class).get().createQuery("SELECT config FROM ClusterConfigMappingEntity config").getResultList().size());
Assert.assertEquals(0,topologyRequestDAO.findByClusterId(cluster.getClusterId()).size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAddAndGetClusterWithSecurityType() throws AmbariException {
StackId stackId=new StackId("HDP-2.1.1");
String c1="foo";
SecurityType securityType=SecurityType.KERBEROS;
clusters.addCluster(c1,stackId,securityType);
Assert.assertNotNull(clusters.getCluster(c1));
Assert.assertEquals(c1,clusters.getCluster(c1).getClusterName());
Assert.assertEquals(securityType,clusters.getCluster(c1).getSecurityType());
}
UtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testSetCurrentStackVersion() throws AmbariException {
String c1="foo3";
try {
clusters.setCurrentStackVersion("",null);
fail("Exception should be thrown on invalid set");
}
catch ( AmbariException e) {
}
try {
clusters.setCurrentStackVersion(c1,null);
fail("Exception should be thrown on invalid set");
}
catch ( AmbariException e) {
}
StackId stackId=new StackId("HDP-0.1");
try {
clusters.setCurrentStackVersion(c1,stackId);
fail("Exception should be thrown on invalid set");
}
catch ( AmbariException e) {
Assert.assertTrue(e.getMessage().contains("Cluster not found"));
}
clusters.addCluster(c1,stackId);
clusters.setCurrentStackVersion(c1,stackId);
Assert.assertNotNull(clusters.getCluster(c1));
ClusterStateEntity entity=injector.getInstance(ClusterStateDAO.class).findByPK(clusters.getCluster(c1).getClusterId());
Assert.assertNotNull(entity);
Assert.assertTrue(entity.getCurrentStack().getStackName().equals(stackId.getStackName()) && entity.getCurrentStack().getStackVersion().equals(stackId.getStackVersion()));
Assert.assertTrue(clusters.getCluster(c1).getCurrentStackVersion().getStackName().equals(stackId.getStackName()));
Assert.assertTrue(clusters.getCluster(c1).getCurrentStackVersion().getStackVersion().equals(stackId.getStackVersion()));
}
Class: org.apache.ambari.server.state.cluster.ConcurrentServiceConfigVersionTest InternalCallVerifier EqualityVerifier
/**
* Tests that creating service config versions from multiple threads doesn't
* violate unique constraints.
* @throws Exception
*/
@Test public void testConcurrentServiceConfigVersions() throws Exception {
long nextVersion=serviceConfigDAO.findNextServiceConfigVersion(cluster.getClusterId(),"HDFS");
Assert.assertEquals(nextVersion,1);
List threads=new ArrayList();
for (int i=0; i < NUMBER_OF_THREADS; i++) {
Thread thread=new ConcurrentServiceConfigThread(cluster);
threads.add(thread);
thread.start();
}
for ( Thread thread : threads) {
thread.join();
}
long maxVersion=NUMBER_OF_THREADS * NUMBER_OF_SERVICE_CONFIG_VERSIONS;
nextVersion=serviceConfigDAO.findNextServiceConfigVersion(cluster.getClusterId(),"HDFS");
Assert.assertEquals(maxVersion + 1,nextVersion);
}
Class: org.apache.ambari.server.state.cluster.ServiceComponentHostConcurrentWriteDeadlockTest BranchVerifier InternalCallVerifier BooleanVerifier
/**
*/
@Test() public void testConcurrentWriteDeadlock() throws Exception {
ServiceComponentHost nameNodeSCH=createNewServiceComponentHost("HDFS","NAMENODE","c6401");
ServiceComponentHost dataNodeSCH=createNewServiceComponentHost("HDFS","DATANODE","c6401");
List serviceComponentHosts=new ArrayList();
serviceComponentHosts.add(nameNodeSCH);
serviceComponentHosts.add(dataNodeSCH);
List threads=new ArrayList();
for (int i=0; i < NUMBER_OF_THREADS; i++) {
ServiceComponentHostDeadlockWriter thread=new ServiceComponentHostDeadlockWriter();
thread.setServiceComponentHosts(serviceComponentHosts);
thread.start();
threads.add(thread);
}
DeadlockWarningThread wt=new DeadlockWarningThread(threads);
while (true) {
if (!wt.isAlive()) {
break;
}
}
if (wt.isDeadlocked()) {
Assert.assertFalse(wt.getErrorMessages().toString(),wt.isDeadlocked());
}
else {
Assert.assertFalse(wt.isDeadlocked());
}
}
Class: org.apache.ambari.server.state.host.HostImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetHostAttributes() throws Exception {
HostEntity hostEntity=createNiceMock(HostEntity.class);
HostStateEntity hostStateEntity=createNiceMock(HostStateEntity.class);
HostDAO hostDAO=createNiceMock(HostDAO.class);
Injector injector=createNiceMock(Injector.class);
HostStateDAO hostStateDAO=createNiceMock(HostStateDAO.class);
Gson gson=new Gson();
expect(injector.getInstance(Gson.class)).andReturn(gson).anyTimes();
expect(injector.getInstance(HostDAO.class)).andReturn(hostDAO).anyTimes();
expect(injector.getInstance(HostStateDAO.class)).andReturn(hostStateDAO).anyTimes();
expect(hostEntity.getHostAttributes()).andReturn("{\"foo\": \"aaa\", \"bar\":\"bbb\"}").anyTimes();
expect(hostEntity.getHostId()).andReturn(1L).anyTimes();
expect(hostEntity.getHostName()).andReturn("host1").anyTimes();
expect(hostEntity.getHostStateEntity()).andReturn(hostStateEntity).anyTimes();
expect(hostDAO.findById(1L)).andReturn(hostEntity).once();
expect(hostStateDAO.findByHostId(1L)).andReturn(hostStateEntity).once();
replay(hostEntity,hostStateEntity,injector,hostDAO);
HostImpl host=new HostImpl(hostEntity,false,injector);
Map hostAttributes=host.getHostAttributes();
assertEquals("aaa",hostAttributes.get("foo"));
assertEquals("bbb",hostAttributes.get("bar"));
host=new HostImpl(hostEntity,true,injector);
hostAttributes=host.getHostAttributes();
assertEquals("aaa",hostAttributes.get("foo"));
assertEquals("bbb",hostAttributes.get("bar"));
verify(hostEntity,hostStateEntity,injector,hostDAO);
}
Class: org.apache.ambari.server.state.host.HostTest InternalCallVerifier EqualityVerifier
@Test public void testHostOs() throws Exception {
Clusters clusters=mock(Clusters.class);
ActionQueue queue=mock(ActionQueue.class);
ActionManager manager=mock(ActionManager.class);
Injector injector=mock(Injector.class);
doNothing().when(injector).injectMembers(any());
HeartBeatHandler handler=new HeartBeatHandler(clusters,queue,manager,injector);
String os=handler.getOsType("RedHat","6.1");
Assert.assertEquals("redhat6",os);
os=handler.getOsType("RedHat","6");
Assert.assertEquals("redhat6",os);
os=handler.getOsType("RedHat6","");
Assert.assertEquals("redhat6",os);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testHostMaintenance() throws Exception {
AmbariMetaInfo metaInfo=injector.getInstance(AmbariMetaInfo.class);
StackId stackId=new StackId("HDP-0.1");
clusters.addCluster("c1",stackId);
Cluster c1=clusters.getCluster("c1");
Assert.assertEquals("c1",c1.getClusterName());
Assert.assertEquals(1,c1.getClusterId());
clusters.addHost("h1");
Host host=clusters.getHost("h1");
host.setIPv4("ipv4");
host.setIPv6("ipv6");
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","6.3");
host.setHostAttributes(hostAttributes);
host.persist();
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
c1.setDesiredStackVersion(stackId);
clusters.mapHostToCluster("h1","c1");
HostEntity entity=hostDAO.findByName("h1");
HostStateEntity stateEntity=entity.getHostStateEntity();
Assert.assertNull(stateEntity.getMaintenanceState());
Assert.assertEquals(MaintenanceState.OFF,host.getMaintenanceState(c1.getClusterId()));
host.setMaintenanceState(c1.getClusterId(),MaintenanceState.ON);
entity=hostDAO.findByName("h1");
stateEntity=entity.getHostStateEntity();
Assert.assertNotNull(stateEntity.getMaintenanceState());
Assert.assertEquals(MaintenanceState.ON,host.getMaintenanceState(c1.getClusterId()));
}
InternalCallVerifier EqualityVerifier
@Test public void testHostInfoImport() throws AmbariException {
HostInfo info=new HostInfo();
info.setMemorySize(100);
info.setProcessorCount(10);
info.setPhysicalProcessorCount(2);
List mounts=new ArrayList();
mounts.add(new DiskInfo("/dev/sda","/mnt/disk1","5000000","4000000","10%","size","fstype"));
info.setMounts(mounts);
info.setHostName("foo");
info.setInterfaces("fip_4");
info.setArchitecture("os_arch");
info.setOS("os_type");
info.setMemoryTotal(10);
clusters.addHost("foo");
Host host=clusters.getHost("foo");
host.importHostInfo(info);
Assert.assertEquals(info.getHostName(),host.getHostName());
Assert.assertEquals(info.getFreeMemory(),host.getAvailableMemBytes());
Assert.assertEquals(info.getMemoryTotal(),host.getTotalMemBytes());
Assert.assertEquals(info.getProcessorCount(),host.getCpuCount());
Assert.assertEquals(info.getPhysicalProcessorCount(),host.getPhCpuCount());
Assert.assertEquals(info.getMounts().size(),host.getDisksInfo().size());
Assert.assertEquals(info.getArchitecture(),host.getOsArch());
Assert.assertEquals(info.getOS(),host.getOsType());
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testHostHeartbeatFlow() throws Exception {
clusters.addHost("foo");
Host host=clusters.getHost("foo");
registerHost(host);
ensureHostUpdatesReceived(host);
long counter=0;
sendHealthyHeartbeat(host,++counter);
verifyHostState(host,HostState.HEALTHY);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
sendHealthyHeartbeat(host,++counter);
verifyHostState(host,HostState.HEALTHY);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
Assert.assertEquals(HealthStatus.HEALTHY,host.getHealthStatus().getHealthStatus());
sendUnhealthyHeartbeat(host,++counter);
verifyHostState(host,HostState.UNHEALTHY);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
Assert.assertEquals(HealthStatus.UNHEALTHY,host.getHealthStatus().getHealthStatus());
sendUnhealthyHeartbeat(host,++counter);
verifyHostState(host,HostState.UNHEALTHY);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
Assert.assertEquals(HealthStatus.UNHEALTHY,host.getHealthStatus().getHealthStatus());
sendHealthyHeartbeat(host,++counter);
verifyHostState(host,HostState.HEALTHY);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
Assert.assertEquals(HealthStatus.HEALTHY,host.getHealthStatus().getHealthStatus());
timeoutHost(host);
verifyHostState(host,HostState.HEARTBEAT_LOST);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
Assert.assertEquals(HealthStatus.UNKNOWN,host.getHealthStatus().getHealthStatus());
timeoutHost(host);
verifyHostState(host,HostState.HEARTBEAT_LOST);
Assert.assertEquals(counter,host.getLastHeartbeatTime());
Assert.assertEquals(HealthStatus.UNKNOWN,host.getHealthStatus().getHealthStatus());
try {
sendUnhealthyHeartbeat(host,++counter);
fail("Invalid event should have triggered an exception");
}
catch ( Exception e) {
}
verifyHostState(host,HostState.HEARTBEAT_LOST);
try {
sendHealthyHeartbeat(host,++counter);
fail("Invalid event should have triggered an exception");
}
catch ( Exception e) {
}
verifyHostState(host,HostState.HEARTBEAT_LOST);
}
UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testHostDesiredConfig() throws Exception {
AmbariMetaInfo metaInfo=injector.getInstance(AmbariMetaInfo.class);
StackId stackId=new StackId("HDP-0.1");
clusters.addCluster("c1",stackId);
Cluster c1=clusters.getCluster("c1");
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
c1.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
Assert.assertEquals("c1",c1.getClusterName());
Assert.assertEquals(1,c1.getClusterId());
clusters.addHost("h1");
Host host=clusters.getHost("h1");
host.setIPv4("ipv4");
host.setIPv6("ipv6");
Map hostAttributes=new HashMap();
hostAttributes.put("os_family","redhat");
hostAttributes.put("os_release_version","6.3");
host.setHostAttributes(hostAttributes);
host.persist();
c1.setDesiredStackVersion(stackId);
clusters.mapHostToCluster("h1","c1");
ConfigFactory configFactory=injector.getInstance(ConfigFactory.class);
Config config=configFactory.createNew(c1,"global",new HashMap(){
{
put("a","b");
put("x","y");
}
}
,new HashMap>());
try {
host.addDesiredConfig(c1.getClusterId(),true,null,config);
Assert.fail("Expect failure when user is not specified.");
}
catch ( Exception e) {
}
config.setTag("v1");
host.addDesiredConfig(c1.getClusterId(),true,"_test",config);
Map map=host.getDesiredConfigs(c1.getClusterId());
Assert.assertTrue("Expect desired config to contain global",map.containsKey("global"));
Assert.assertEquals("Expect global user to be '_test'","_test",map.get("global").getUser());
config=configFactory.createNew(c1,"global",new HashMap(){
{
put("c","d");
}
}
,new HashMap>());
config.setTag("v2");
host.addDesiredConfig(c1.getClusterId(),true,"_test1",config);
map=host.getDesiredConfigs(c1.getClusterId());
Assert.assertTrue("Expect desired config to contain global",map.containsKey("global"));
Assert.assertEquals("Expect version to be 'v2'","v2",map.get("global").getTag());
Assert.assertEquals("Expect user to be '_test1'","_test1",map.get("global").getUser());
host.addDesiredConfig(c1.getClusterId(),false,"_test2",config);
map=host.getDesiredConfigs(c1.getClusterId());
Assert.assertEquals("Expect no mapping configs",0,map.size());
}
Class: org.apache.ambari.server.state.kerberos.KerberosConfigurationDescriptorTest BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testJSONDeserializeMultiple(){
List> jsonData=new Gson().fromJson(JSON_MULTIPLE_VALUE,new TypeToken>>(){
}
.getType());
List configurations=new ArrayList();
for ( Map item : jsonData) {
configurations.add(new KerberosConfigurationDescriptor(item));
}
Assert.assertNotNull(configurations);
Assert.assertEquals(2,configurations.size());
for ( KerberosConfigurationDescriptor configuration : configurations) {
Assert.assertFalse(configuration.isContainer());
String type=configuration.getType();
Assert.assertEquals(2,configurations.size());
Map properties=configuration.getProperties();
if ("configuration-type".equals(type)) {
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("value1",properties.get("property1"));
Assert.assertEquals("value2",properties.get("property2"));
}
else if ("configuration-type2".equals(type)) {
Assert.assertNotNull(properties);
Assert.assertEquals(3,properties.size());
Assert.assertEquals("value1",properties.get("property1"));
Assert.assertEquals("value2",properties.get("property2"));
Assert.assertEquals("value3",properties.get("property3"));
Assert.assertEquals("value1",configuration.getProperty("property1"));
Assert.assertEquals("value2",configuration.getProperty("property2"));
Assert.assertEquals("value3",configuration.getProperty("property3"));
}
else {
Assert.fail("Missing expected configuration type");
}
}
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdate(){
Map> jsonData=new Gson().fromJson(JSON_SINGLE_VALUE,new TypeToken>>(){
}
.getType());
KerberosConfigurationDescriptor configuration=new KerberosConfigurationDescriptor(jsonData);
KerberosConfigurationDescriptor updatedConfiguration=new KerberosConfigurationDescriptor(MAP_SINGLE_VALUE);
Map properties;
properties=configuration.getProperties();
Assert.assertEquals("configuration-type",configuration.getType());
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("${property-value1}",properties.get("property1"));
Assert.assertEquals("${property.value2}",properties.get("property2"));
configuration.update(updatedConfiguration);
properties=configuration.getProperties();
Assert.assertEquals("configuration-type",configuration.getType());
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("black",properties.get("property1"));
Assert.assertEquals("white",properties.get("property2"));
updatedConfiguration.setType("updated-type");
configuration.update(updatedConfiguration);
Assert.assertEquals("updated-type",configuration.getType());
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("black",properties.get("property1"));
Assert.assertEquals("white",properties.get("property2"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testJSONDeserialize(){
Map> jsonData=new Gson().fromJson(JSON_SINGLE_VALUE,new TypeToken>>(){
}
.getType());
KerberosConfigurationDescriptor configuration=new KerberosConfigurationDescriptor(jsonData);
Assert.assertNotNull(configuration);
Assert.assertFalse(configuration.isContainer());
Map properties=configuration.getProperties();
Assert.assertEquals("configuration-type",configuration.getType());
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("${property-value1}",properties.get("property1"));
Assert.assertEquals("${property.value2}",properties.get("property2"));
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMapDeserializeMultiple(){
List configurations=new ArrayList();
for ( Map> item : MAP_MULTIPLE_VALUES) {
configurations.add(new KerberosConfigurationDescriptor(item));
}
Assert.assertNotNull(configurations);
Assert.assertEquals(2,configurations.size());
for ( KerberosConfigurationDescriptor configuration : configurations) {
Assert.assertFalse(configuration.isContainer());
String type=configuration.getType();
Map properties=configuration.getProperties();
if ("configuration-type".equals(type)) {
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("black",properties.get("property1"));
Assert.assertEquals("white",properties.get("property2"));
Assert.assertEquals("black",configuration.getProperty("property1"));
Assert.assertEquals("white",configuration.getProperty("property2"));
}
else if ("configuration-type2".equals(type)) {
Assert.assertNotNull(properties);
Assert.assertEquals(3,properties.size());
Assert.assertEquals("red",properties.get("property1"));
Assert.assertEquals("yellow",properties.get("property2"));
Assert.assertEquals("green",properties.get("property3"));
Assert.assertEquals("red",configuration.getProperty("property1"));
Assert.assertEquals("yellow",configuration.getProperty("property2"));
Assert.assertEquals("green",configuration.getProperty("property3"));
}
else {
Assert.fail("Missing expected configuration type");
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMapDeserialize(){
KerberosConfigurationDescriptor configuration=new KerberosConfigurationDescriptor(MAP_SINGLE_VALUE);
Map properties=configuration.getProperties();
Assert.assertNotNull(configuration);
Assert.assertFalse(configuration.isContainer());
Assert.assertEquals("configuration-type",configuration.getType());
Assert.assertNotNull(properties);
Assert.assertEquals(2,properties.size());
Assert.assertEquals("black",properties.get("property1"));
Assert.assertEquals("white",properties.get("property2"));
}
Class: org.apache.ambari.server.state.kerberos.KerberosDescriptorTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetReferencedIdentityDescriptor_NameCollisions() throws IOException {
URL systemResourceURL=ClassLoader.getSystemResource("kerberos/test_get_referenced_identity_descriptor.json");
Assert.assertNotNull(systemResourceURL);
KerberosDescriptor descriptor=KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(systemResourceURL.getFile()));
KerberosIdentityDescriptor identity;
identity=descriptor.getReferencedIdentityDescriptor("/collision");
Assert.assertNotNull(identity);
Assert.assertEquals("collision",identity.getName());
Assert.assertNotNull(identity.getParent());
Assert.assertEquals(null,identity.getParent().getName());
identity=descriptor.getReferencedIdentityDescriptor("/SERVICE1/collision");
Assert.assertNotNull(identity);
Assert.assertEquals("collision",identity.getName());
Assert.assertNotNull(identity.getParent());
Assert.assertEquals("SERVICE1",identity.getParent().getName());
identity=descriptor.getReferencedIdentityDescriptor("/SERVICE2/SERVICE2_COMPONENT1/collision");
Assert.assertNotNull(identity);
Assert.assertEquals("collision",identity.getName());
Assert.assertNotNull(identity.getParent());
Assert.assertEquals("SERVICE2_COMPONENT1",identity.getParent().getName());
Assert.assertNotNull(identity.getParent().getParent());
Assert.assertEquals("SERVICE2",identity.getParent().getParent().getName());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetReferencedIdentityDescriptor_RelativePath() throws IOException {
URL systemResourceURL=ClassLoader.getSystemResource("kerberos/test_get_referenced_identity_descriptor.json");
Assert.assertNotNull(systemResourceURL);
KerberosDescriptor descriptor=KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(systemResourceURL.getFile()));
Assert.assertNotNull(descriptor);
KerberosServiceDescriptor serviceDescriptor=descriptor.getService("SERVICE2");
Assert.assertNotNull(serviceDescriptor);
KerberosComponentDescriptor componentDescriptor=serviceDescriptor.getComponent("SERVICE2_COMPONENT1");
Assert.assertNotNull(componentDescriptor);
KerberosIdentityDescriptor identity;
identity=componentDescriptor.getReferencedIdentityDescriptor("../service2_identity");
Assert.assertNotNull(identity);
Assert.assertEquals("service2_identity",identity.getName());
Assert.assertEquals(serviceDescriptor,identity.getParent());
identity=serviceDescriptor.getReferencedIdentityDescriptor("../service2_identity");
Assert.assertNull(identity);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetReferencedIdentityDescriptor() throws IOException {
URL systemResourceURL=ClassLoader.getSystemResource("kerberos/test_get_referenced_identity_descriptor.json");
Assert.assertNotNull(systemResourceURL);
KerberosDescriptor descriptor=KERBEROS_DESCRIPTOR_FACTORY.createInstance(new File(systemResourceURL.getFile()));
KerberosIdentityDescriptor identity;
identity=descriptor.getReferencedIdentityDescriptor("/stack_identity");
Assert.assertNotNull(identity);
Assert.assertEquals("stack_identity",identity.getName());
identity=descriptor.getReferencedIdentityDescriptor("/SERVICE1/service1_identity");
Assert.assertNotNull(identity);
Assert.assertEquals("service1_identity",identity.getName());
Assert.assertNotNull(identity.getParent());
Assert.assertEquals("SERVICE1",identity.getParent().getName());
identity=descriptor.getReferencedIdentityDescriptor("/SERVICE2/SERVICE2_COMPONENT1/service2_component1_identity");
Assert.assertNotNull(identity);
Assert.assertEquals("service2_component1_identity",identity.getName());
Assert.assertNotNull(identity.getParent());
Assert.assertEquals("SERVICE2_COMPONENT1",identity.getParent().getName());
Assert.assertNotNull(identity.getParent().getParent());
Assert.assertEquals("SERVICE2",identity.getParent().getParent().getName());
}
InternalCallVerifier NullVerifier
@Test public void testFromMapViaGSON() throws AmbariException {
Object data=new Gson().fromJson(JSON_VALUE,Object.class);
Assert.assertNotNull(data);
KerberosDescriptor descriptor=new KerberosDescriptor((Map,?>)data);
validateFromJSON(descriptor);
}
Class: org.apache.ambari.server.state.kerberos.KerberosPrincipalDescriptorTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateSparse(){
KerberosPrincipalDescriptor principalDescriptor;
KerberosPrincipalDescriptor updatedPrincipalDescriptor;
principalDescriptor=createFromJSON();
updatedPrincipalDescriptor=createFromJSONSparse();
Assert.assertNotNull(principalDescriptor);
Assert.assertNotNull(updatedPrincipalDescriptor);
Assert.assertEquals("service/_HOST@_REALM",principalDescriptor.getValue());
Assert.assertEquals("service-site/service.component.kerberos.principal",principalDescriptor.getConfiguration());
Assert.assertEquals(KerberosPrincipalType.SERVICE,principalDescriptor.getType());
Assert.assertEquals("localUser",principalDescriptor.getLocalUsername());
principalDescriptor.update(updatedPrincipalDescriptor);
Assert.assertEquals("serviceOther/_HOST@_REALM",principalDescriptor.getValue());
Assert.assertEquals("service-site/service.component.kerberos.principal",principalDescriptor.getConfiguration());
Assert.assertEquals(KerberosPrincipalType.SERVICE,principalDescriptor.getType());
Assert.assertEquals("localUser",principalDescriptor.getLocalUsername());
principalDescriptor=createFromMap();
updatedPrincipalDescriptor=createFromMapSparse();
Assert.assertNotNull(principalDescriptor);
Assert.assertNotNull(updatedPrincipalDescriptor);
Assert.assertEquals("user@_REALM",principalDescriptor.getValue());
Assert.assertEquals("service-site/service.component.kerberos.https.principal",principalDescriptor.getConfiguration());
Assert.assertEquals(KerberosPrincipalType.USER,principalDescriptor.getType());
Assert.assertNull(principalDescriptor.getLocalUsername());
principalDescriptor.update(updatedPrincipalDescriptor);
Assert.assertEquals("userOther@_REALM",principalDescriptor.getValue());
Assert.assertEquals("service-site/service.component.kerberos.https.principal",principalDescriptor.getConfiguration());
Assert.assertEquals(KerberosPrincipalType.USER,principalDescriptor.getType());
Assert.assertNull(principalDescriptor.getLocalUsername());
}
Class: org.apache.ambari.server.state.kerberos.VariableReplacementHelperTest InternalCallVerifier EqualityVerifier
@Test public void testReplaceVariablesWithFunctions() throws AmbariException {
Map> configurations=new HashMap>(){
{
put("",new HashMap(){
{
put("delimited.data","one,two,three,four");
put("realm","UNIT.TEST");
}
}
);
put("clusterHostInfo",new HashMap(){
{
put("hive_metastore_host","host1.unit.test, host2.unit.test , host3.unit.test");
}
}
);
}
}
;
Assert.assertEquals("test=thrift://one:9083\\,thrift://two:9083\\,thrift://three:9083\\,thrift://four:9083",helper.replaceVariables("test=${delimited.data|each(thrift://%s:9083, \\\\,, \\s*\\,\\s*)}",configurations));
Assert.assertEquals("hive.metastore.local=false,hive.metastore.uris=thrift://host1.unit.test:9083\\,thrift://host2.unit.test:9083\\,thrift://host3.unit.test:9083,hive.metastore.sasl.enabled=true,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse,hive.exec.mode.local.auto=false,hive.metastore.kerberos.principal=hive/_HOST@UNIT.TEST",helper.replaceVariables("hive.metastore.local=false,hive.metastore.uris=${clusterHostInfo/hive_metastore_host | each(thrift://%s:9083, \\\\,, \\s*\\,\\s*)},hive.metastore.sasl.enabled=true,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse,hive.exec.mode.local.auto=false,hive.metastore.kerberos.principal=hive/_HOST@${realm}",configurations));
}
InternalCallVerifier EqualityVerifier
@Test public void testReplaceComplicatedVariables() throws AmbariException {
Map> configurations=new HashMap>(){
{
put("",new HashMap(){
{
put("host","c6401.ambari.apache.org");
put("realm","EXAMPLE.COM");
}
}
);
}
}
;
Assert.assertEquals("hive.metastore.local=false,hive.metastore.uris=thrift://c6401.ambari.apache.org:9083,hive.metastore.sasl.enabled=true,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse,hive.exec.mode.local.auto=false,hive.metastore.kerberos.principal=hive/_HOST@EXAMPLE.COM",helper.replaceVariables("hive.metastore.local=false,hive.metastore.uris=thrift://${host}:9083,hive.metastore.sasl.enabled=true,hive.metastore.execute.setugi=true,hive.metastore.warehouse.dir=/apps/hive/warehouse,hive.exec.mode.local.auto=false,hive.metastore.kerberos.principal=hive/_HOST@${realm}",configurations));
Assert.assertEquals("Hello my realm is {EXAMPLE.COM}",helper.replaceVariables("Hello my realm is {${realm}}",configurations));
Assert.assertEquals("$c6401.ambari.apache.org",helper.replaceVariables("$${host}",configurations));
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testReplaceVariables() throws AmbariException {
Map> configurations=new HashMap>(){
{
put("",new HashMap(){
{
put("global_variable","Hello World");
put("variable-name","dash");
put("variable_name","underscore");
put("variable.name","dot");
}
}
);
put("config_type",new HashMap(){
{
put("variable-name","config_type_dash");
put("variable_name","config_type_underscore");
put("variable.name","config_type_dot");
}
}
);
put("config.type",new HashMap(){
{
put("variable-name","config.type_dash");
put("variable_name","config.type_underscore");
put("variable.name","config.type_dot");
}
}
);
put("config-type",new HashMap(){
{
put("variable.name","Replacement1");
put("variable.name1","${config-type2/variable.name}");
put("variable.name2","");
}
}
);
put("config-type2",new HashMap(){
{
put("variable.name","Replacement2");
put("self_reference","${config-type2/self_reference}");
put("${config-type/variable.name}_reference","Replacement in the key");
}
}
);
}
}
;
Assert.assertEquals("concrete",helper.replaceVariables("concrete",configurations));
Assert.assertEquals("Hello World",helper.replaceVariables("${global_variable}",configurations));
Assert.assertEquals("Replacement1",helper.replaceVariables("${config-type/variable.name}",configurations));
Assert.assertEquals("Replacement1|Replacement2",helper.replaceVariables("${config-type/variable.name}|${config-type2/variable.name}",configurations));
Assert.assertEquals("Replacement1|Replacement2|${config-type3/variable.name}",helper.replaceVariables("${config-type/variable.name}|${config-type2/variable.name}|${config-type3/variable.name}",configurations));
Assert.assertEquals("Replacement2|Replacement2",helper.replaceVariables("${config-type/variable.name1}|${config-type2/variable.name}",configurations));
Assert.assertEquals("Replacement1_reference",helper.replaceVariables("${config-type/variable.name}_reference",configurations));
Assert.assertEquals("dash",helper.replaceVariables("${variable-name}",configurations));
Assert.assertEquals("underscore",helper.replaceVariables("${variable_name}",configurations));
Assert.assertEquals("config_type_dot",helper.replaceVariables("${config_type/variable.name}",configurations));
Assert.assertEquals("config_type_dash",helper.replaceVariables("${config_type/variable-name}",configurations));
Assert.assertEquals("config_type_underscore",helper.replaceVariables("${config_type/variable_name}",configurations));
Assert.assertEquals("config.type_dot",helper.replaceVariables("${config.type/variable.name}",configurations));
Assert.assertEquals("config.type_dash",helper.replaceVariables("${config.type/variable-name}",configurations));
Assert.assertEquals("config.type_underscore",helper.replaceVariables("${config.type/variable_name}",configurations));
Assert.assertEquals("dot",helper.replaceVariables("${variable.name}",configurations));
Assert.assertEquals("",helper.replaceVariables("${config-type/variable.name2}",configurations));
try {
Assert.assertEquals("${config-type2/self_reference}",helper.replaceVariables("${config-type2/self_reference}",configurations));
Assert.fail(String.format("%s expected to be thrown",AmbariException.class.getName()));
}
catch ( AmbariException e) {
}
}
Class: org.apache.ambari.server.state.scheduler.BatchRequestJobTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testTaskCountsPersistedWithTrigger() throws Exception {
ExecutionScheduleManager scheduleManagerMock=createNiceMock(ExecutionScheduleManager.class);
BatchRequestJob batchRequestJobMock=createMockBuilder(BatchRequestJob.class).withConstructor(scheduleManagerMock,100L).addMockedMethods("doWork").createMock();
JobExecutionContext executionContext=createNiceMock(JobExecutionContext.class);
JobDataMap jobDataMap=createNiceMock(JobDataMap.class);
JobDetail jobDetail=createNiceMock(JobDetail.class);
Map properties=new HashMap();
properties.put(BatchRequestJob.BATCH_REQUEST_FAILED_TASKS_KEY,10);
properties.put(BatchRequestJob.BATCH_REQUEST_TOTAL_TASKS_KEY,20);
expect(scheduleManagerMock.continueOnMisfire(executionContext)).andReturn(true);
expect(executionContext.getMergedJobDataMap()).andReturn(jobDataMap);
expect(executionContext.getJobDetail()).andReturn(jobDetail);
expect(jobDetail.getKey()).andReturn(JobKey.jobKey("testJob","testGroup"));
expect(jobDataMap.getWrappedMap()).andReturn(properties);
expect(jobDataMap.getString((String)anyObject())).andReturn("testJob").anyTimes();
Capture triggerCapture=new Capture();
scheduleManagerMock.scheduleJob(capture(triggerCapture));
expectLastCall().once();
replay(scheduleManagerMock,executionContext,jobDataMap,jobDetail);
batchRequestJobMock.execute(executionContext);
verify(scheduleManagerMock,executionContext,jobDataMap,jobDetail);
Trigger trigger=triggerCapture.getValue();
Assert.assertNotNull(trigger);
JobDataMap savedMap=trigger.getJobDataMap();
Assert.assertNotNull(savedMap);
Assert.assertEquals(10,savedMap.getIntValue(BatchRequestJob.BATCH_REQUEST_FAILED_TASKS_KEY));
Assert.assertEquals(20,savedMap.getIntValue(BatchRequestJob.BATCH_REQUEST_TOTAL_TASKS_KEY));
}
Class: org.apache.ambari.server.state.services.AlertNoticeDispatchServiceTest APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
/**
* Tests a digest dispatch for email.
* @throws Exception
*/
@Test public void testDigestDispatch() throws Exception {
MockEmailDispatcher dispatcher=new MockEmailDispatcher();
List notices=getSingleMockNotice(dispatcher.getType());
AlertNoticeEntity notice=notices.get(0);
EasyMock.expect(m_dao.findPendingNotices()).andReturn(notices).once();
EasyMock.expect(m_dispatchFactory.getDispatcher("EMAIL")).andReturn(dispatcher).once();
EasyMock.expect(m_dao.merge(notice)).andReturn(notice).atLeastOnce();
EasyMock.replay(m_dao,m_dispatchFactory);
AlertNoticeDispatchService service=m_injector.getInstance(AlertNoticeDispatchService.class);
service.startUp();
service.setExecutor(new MockExecutor());
service.runOneIteration();
EasyMock.verify(m_dao,m_dispatchFactory);
Notification notification=dispatcher.getNotification();
assertNotNull(notification);
assertTrue(notification.Subject.contains("OK[1]"));
assertTrue(notification.Subject.contains("Critical[0]"));
assertTrue(notification.Body.contains(ALERT_UNIQUE_TEXT));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests the parsing of the {@link AlertHistoryEntity} list into{@link AlertSummaryInfo}.
* @throws Exception
*/
@Test public void testAlertInfo() throws Exception {
AlertHistoryEntity history=m_histories.get(0);
AlertInfo alertInfo=new AlertInfo(history);
assertEquals(history.getAlertDefinition().getLabel(),alertInfo.getAlertName());
assertEquals(history.getAlertState(),alertInfo.getAlertState());
assertEquals(history.getAlertText(),alertInfo.getAlertText());
assertEquals(history.getComponentName(),alertInfo.getComponentName());
assertEquals(history.getHostName(),alertInfo.getHostName());
assertEquals(history.getServiceName(),alertInfo.getServiceName());
assertEquals(false,alertInfo.hasComponentName());
assertEquals(true,alertInfo.hasHostName());
}
APIUtilityVerifier InternalCallVerifier NullVerifier
/**
* Tests that a failed dispatch invokes the callback to mark the UUIDs of the
* notices as FAILED.
* @throws Exception
*/
@Test public void testFailedDispatch() throws Exception {
MockEmailDispatcher dispatcher=new MockEmailDispatcher();
List notices=getSingleMockNotice(dispatcher.getType());
AlertNoticeEntity notice=notices.get(0);
EasyMock.expect(m_dao.findPendingNotices()).andReturn(notices).once();
EasyMock.expect(m_dao.merge(notice)).andReturn(notice).once();
EasyMock.expect(m_dao.findNoticeByUuid(ALERT_NOTICE_UUID_1)).andReturn(notice).once();
EasyMock.expect(m_dao.merge(notice)).andReturn(notice).once();
EasyMock.expect(m_dispatchFactory.getDispatcher(dispatcher.getType())).andReturn(dispatcher).once();
EasyMock.replay(m_dao,m_dispatchFactory);
AlertNoticeDispatchService service=m_injector.getInstance(AlertNoticeDispatchService.class);
service.setExecutor(new MockExecutor());
service.runOneIteration();
EasyMock.verify(m_dao,m_dispatchFactory);
Notification notification=dispatcher.getNotification();
assertNull(notification);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests the parsing of the {@link AlertHistoryEntity} list into{@link AlertSummaryInfo}.
* @throws Exception
*/
@Test public void testAlertSummaryInfo() throws Exception {
AlertSummaryInfo alertInfo=new AlertSummaryInfo(m_histories);
assertEquals(50,alertInfo.getAlerts().size());
assertEquals(10,alertInfo.getAlerts("Service 1").size());
assertEquals(10,alertInfo.getAlerts("Service 2").size());
assertEquals(8,alertInfo.getAlerts("Service 1","OK").size());
assertEquals(2,alertInfo.getAlerts("Service 1","CRITICAL").size());
assertNull(alertInfo.getAlerts("Service 1","WARNING"));
assertNull(alertInfo.getAlerts("Service 1","UNKNOWN"));
assertEquals(5,alertInfo.getServices().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests that when a dispatcher doesn't call back, the{@link AlertNoticeEntity} will be put from{@link NotificationState#PENDING} to {@link NotificationState#DISPATCHED}.
* @throws Exception
*/
@Test public void testDispatcherWithoutCallbacks() throws Exception {
MockNoCallbackDispatcher dispatcher=new MockNoCallbackDispatcher();
List notices=getSingleMockNotice(dispatcher.getType());
AlertNoticeEntity notice=notices.get(0);
EasyMock.expect(m_dao.findPendingNotices()).andReturn(notices).once();
EasyMock.expect(m_dao.merge(notice)).andReturn(notice).atLeastOnce();
EasyMock.expect(m_dispatchFactory.getDispatcher(dispatcher.getType())).andReturn(dispatcher).once();
EasyMock.replay(m_dao,m_dispatchFactory);
AlertNoticeDispatchService service=m_injector.getInstance(AlertNoticeDispatchService.class);
service.startUp();
service.setExecutor(new MockExecutor());
service.runOneIteration();
EasyMock.verify(m_dao,m_dispatchFactory);
Notification notification=dispatcher.getNotification();
assertNotNull(notification);
assertEquals(NotificationState.DISPATCHED,notice.getNotifyState());
}
Class: org.apache.ambari.server.state.stack.ConfigUpgradePackTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConfigUpgradeDefinitionParsing() throws Exception {
ConfigUpgradePack cup=ambariMetaInfo.getConfigUpgradePack("HDP","2.1.1");
Map changesByID=cup.enumerateConfigChangesByID();
ConfigUpgradeChangeDefinition hdp_2_1_1_nm_pre_upgrade=changesByID.get("hdp_2_1_1_nm_pre_upgrade");
assertEquals("core-site",hdp_2_1_1_nm_pre_upgrade.getConfigType());
assertEquals(4,hdp_2_1_1_nm_pre_upgrade.getTransfers().size());
ConfigUpgradeChangeDefinition.Transfer t1=hdp_2_1_1_nm_pre_upgrade.getTransfers().get(0);
assertEquals(TransferOperation.COPY,t1.operation);
assertEquals("copy-key",t1.fromKey);
assertEquals("copy-key-to",t1.toKey);
ConfigUpgradeChangeDefinition.Transfer t2=hdp_2_1_1_nm_pre_upgrade.getTransfers().get(1);
assertEquals(TransferOperation.COPY,t2.operation);
assertEquals("my-site",t2.fromType);
assertEquals("my-copy-key",t2.fromKey);
assertEquals("my-copy-key-to",t2.toKey);
assertTrue(t2.keepKeys.isEmpty());
ConfigUpgradeChangeDefinition.Transfer t3=hdp_2_1_1_nm_pre_upgrade.getTransfers().get(2);
assertEquals(TransferOperation.MOVE,t3.operation);
assertEquals("move-key",t3.fromKey);
assertEquals("move-key-to",t3.toKey);
ConfigUpgradeChangeDefinition.Transfer t4=hdp_2_1_1_nm_pre_upgrade.getTransfers().get(3);
assertEquals(TransferOperation.DELETE,t4.operation);
assertEquals("delete-key",t4.deleteKey);
assertNull(t4.toKey);
assertTrue(t4.preserveEdits);
assertEquals(1,t4.keepKeys.size());
assertEquals("important-key",t4.keepKeys.get(0));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testMerge(){
ArrayList cups=new ArrayList<>();
for (int cupIndex=0; cupIndex < 3; cupIndex++) {
ArrayList services=new ArrayList<>();
for (int serviceIndex=0; serviceIndex < 2; serviceIndex++) {
String serviceName;
if (serviceIndex == 0) {
serviceName="HDFS";
}
else {
serviceName=String.format("SOME_SERVICE_%s",cupIndex);
}
ArrayList components=new ArrayList<>();
for (int componentIndex=0; componentIndex < 2; componentIndex++) {
String componentName;
if (componentIndex == 0) {
componentName="NAMENODE";
}
else {
componentName="SOME_COMPONENT_" + cupIndex;
}
ArrayList changeDefinitions=new ArrayList<>();
for (int changeIndex=0; changeIndex < 2; changeIndex++) {
String change_id=String.format("CHANGE_%s_%s_%s_%s",cupIndex,serviceIndex,componentIndex,changeIndex);
ConfigUpgradeChangeDefinition changeDefinition=new ConfigUpgradeChangeDefinition();
changeDefinition.id=change_id;
changeDefinitions.add(changeDefinition);
}
AffectedComponent component=new AffectedComponent();
component.name=componentName;
component.changes=changeDefinitions;
components.add(component);
}
AffectedService service=new AffectedService();
service.name=serviceName;
service.components=components;
services.add(service);
}
ConfigUpgradePack cupI=new ConfigUpgradePack();
cupI.services=services;
cups.add(cupI);
}
ConfigUpgradePack result=ConfigUpgradePack.merge(cups);
assertEquals(result.enumerateConfigChangesByID().entrySet().size(),24);
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("NAMENODE").changes.get(0).id,"CHANGE_0_0_0_0");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("NAMENODE").changes.get(1).id,"CHANGE_0_0_0_1");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("NAMENODE").changes.get(2).id,"CHANGE_1_0_0_0");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("NAMENODE").changes.get(3).id,"CHANGE_1_0_0_1");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("NAMENODE").changes.get(4).id,"CHANGE_2_0_0_0");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("NAMENODE").changes.get(5).id,"CHANGE_2_0_0_1");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("SOME_COMPONENT_0").changes.get(0).id,"CHANGE_0_0_1_0");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("SOME_COMPONENT_0").changes.get(1).id,"CHANGE_0_0_1_1");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("SOME_COMPONENT_1").changes.get(0).id,"CHANGE_1_0_1_0");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("SOME_COMPONENT_1").changes.get(1).id,"CHANGE_1_0_1_1");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("SOME_COMPONENT_2").changes.get(0).id,"CHANGE_2_0_1_0");
assertEquals(result.getServiceMap().get("HDFS").getComponentMap().get("SOME_COMPONENT_2").changes.get(1).id,"CHANGE_2_0_1_1");
assertEquals(result.getServiceMap().get("SOME_SERVICE_0").getComponentMap().get("NAMENODE").changes.get(0).id,"CHANGE_0_1_0_0");
assertEquals(result.getServiceMap().get("SOME_SERVICE_0").getComponentMap().get("NAMENODE").changes.get(1).id,"CHANGE_0_1_0_1");
assertEquals(result.getServiceMap().get("SOME_SERVICE_0").getComponentMap().get("SOME_COMPONENT_0").changes.get(0).id,"CHANGE_0_1_1_0");
assertEquals(result.getServiceMap().get("SOME_SERVICE_0").getComponentMap().get("SOME_COMPONENT_0").changes.get(1).id,"CHANGE_0_1_1_1");
assertEquals(result.getServiceMap().get("SOME_SERVICE_1").getComponentMap().get("NAMENODE").changes.get(0).id,"CHANGE_1_1_0_0");
assertEquals(result.getServiceMap().get("SOME_SERVICE_1").getComponentMap().get("NAMENODE").changes.get(1).id,"CHANGE_1_1_0_1");
assertEquals(result.getServiceMap().get("SOME_SERVICE_1").getComponentMap().get("SOME_COMPONENT_1").changes.get(0).id,"CHANGE_1_1_1_0");
assertEquals(result.getServiceMap().get("SOME_SERVICE_1").getComponentMap().get("SOME_COMPONENT_1").changes.get(1).id,"CHANGE_1_1_1_1");
assertEquals(result.getServiceMap().get("SOME_SERVICE_2").getComponentMap().get("NAMENODE").changes.get(0).id,"CHANGE_2_1_0_0");
assertEquals(result.getServiceMap().get("SOME_SERVICE_2").getComponentMap().get("NAMENODE").changes.get(1).id,"CHANGE_2_1_0_1");
assertEquals(result.getServiceMap().get("SOME_SERVICE_2").getComponentMap().get("SOME_COMPONENT_2").changes.get(0).id,"CHANGE_2_1_1_0");
assertEquals(result.getServiceMap().get("SOME_SERVICE_2").getComponentMap().get("SOME_COMPONENT_2").changes.get(1).id,"CHANGE_2_1_1_1");
}
Class: org.apache.ambari.server.state.stack.OSFamilyTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFind() throws Exception {
String expected_result="ubuntu12";
String actual_result=os_family.find("debian12");
Assert.assertNotNull(actual_result);
Assert.assertEquals(expected_result,actual_result);
expected_result="winsrv6";
actual_result=os_family.find("win2012server6");
Assert.assertNotNull(actual_result);
Assert.assertEquals(expected_result,actual_result);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testOSListing() throws Exception {
Set actual_oslist=os_family.os_list();
Set expected_oslist=new HashSet(Arrays.asList("redhat6","oraclelinux5","suse11","fedora6","opensuse11","centos6","fedora5","centos5","ubuntu12","redhat5","sles11","oraclelinux6","debian12","sled11","win2012server6","win2012serverr26","win2008serverr26","win2008server6"));
Assert.assertNotNull(actual_oslist);
Assert.assertEquals(expected_oslist,actual_oslist);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testFindTypes() throws Exception {
Set expected_set=new HashSet(Arrays.asList("ubuntu12","debian12"));
Set actual_set=os_family.findTypes("ubuntu12");
Assert.assertNotNull(actual_set);
Assert.assertEquals(expected_set,actual_set);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testParsingOS() throws Exception {
Map expected_map=new HashMap();
expected_map.put("distro","ubuntu");
expected_map.put("versions","12");
String test_value="ubuntu12";
Class[] parse_os_args={String.class};
Method parse_os=os_family.getClass().getDeclaredMethod("parse_os",parse_os_args);
parse_os.setAccessible(true);
Object test_map=parse_os.invoke(os_family,test_value);
parse_os.setAccessible(false);
Assert.assertNotNull(test_map);
Assert.assertEquals(expected_map.getClass().getName(),test_map.getClass().getName());
Assert.assertEquals(expected_map,test_map);
}
Class: org.apache.ambari.server.state.stack.UpgradePackTest InternalCallVerifier BooleanVerifier
@Test public void testExistence() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("foo","bar");
assertTrue(upgrades.isEmpty());
upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.size() > 0);
assertTrue(upgrades.containsKey("upgrade_test"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testSkippableFailures() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
Set keys=upgrades.keySet();
for ( String key : keys) {
Assert.assertFalse(upgrades.get(key).isComponentFailureAutoSkipped());
Assert.assertFalse(upgrades.get(key).isServiceCheckFailureAutoSkipped());
}
upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.2.0");
UpgradePack upgradePack=upgrades.get("upgrade_test_skip_failures");
Assert.assertTrue(upgradePack.isComponentFailureAutoSkipped());
Assert.assertTrue(upgradePack.isServiceCheckFailureAutoSkipped());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGroupOrdersForNonRolling(){
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.size() > 0);
assertTrue(upgrades.containsKey("upgrade_test_nonrolling"));
UpgradePack upgrade=upgrades.get("upgrade_test_nonrolling");
List expected_up=Arrays.asList("PRE_CLUSTER","Stop High-Level Daemons","Backups","Stop Low-Level Daemons","UPDATE_DESIRED_STACK_ID","ALL_HOST_OPS","ZOOKEEPER","HDFS","MR and YARN","POST_CLUSTER");
List expected_down=Arrays.asList("Restore Backups","UPDATE_DESIRED_STACK_ID","ALL_HOST_OPS","ZOOKEEPER","HDFS","MR and YARN","POST_CLUSTER");
Iterator itr_up=expected_up.iterator();
List upgrade_groups=upgrade.getGroups(Direction.UPGRADE);
for ( Grouping g : upgrade_groups) {
assertEquals(true,itr_up.hasNext());
assertEquals(itr_up.next(),g.name);
}
Iterator itr_down=expected_down.iterator();
List downgrade_groups=upgrade.getGroups(Direction.DOWNGRADE);
for ( Grouping g : downgrade_groups) {
assertEquals(true,itr_down.hasNext());
assertEquals(itr_down.next(),g.name);
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDirectionForNonRolling() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.size() > 0);
assertTrue(upgrades.containsKey("upgrade_test_nonrolling"));
UpgradePack upgrade=upgrades.get("upgrade_test_nonrolling");
assertTrue(upgrade.getType() == UpgradeType.NON_ROLLING);
List groups=upgrade.getGroups(Direction.UPGRADE);
assertEquals(10,groups.size());
Grouping group=null;
ClusterGrouping clusterGroup=null;
UpdateStackGrouping updateStackGroup=null;
StopGrouping stopGroup=null;
RestartGrouping restartGroup=null;
group=groups.get(0);
assertEquals(ClusterGrouping.class,group.getClass());
clusterGroup=(ClusterGrouping)group;
assertEquals("Prepare Upgrade",clusterGroup.title);
assertNull(clusterGroup.parallelScheduler);
group=groups.get(1);
assertEquals(StopGrouping.class,group.getClass());
stopGroup=(StopGrouping)group;
assertEquals("Stop Daemons for High-Level Services",stopGroup.title);
assertNotNull(stopGroup.parallelScheduler);
assertEquals(ParallelScheduler.DEFAULT_MAX_DEGREE_OF_PARALLELISM,stopGroup.parallelScheduler.maxDegreeOfParallelism);
group=groups.get(2);
assertEquals(ClusterGrouping.class,group.getClass());
clusterGroup=(ClusterGrouping)group;
assertEquals("Take Backups",clusterGroup.title);
assertNull(clusterGroup.parallelScheduler);
group=groups.get(3);
assertEquals(StopGrouping.class,group.getClass());
stopGroup=(StopGrouping)group;
assertEquals("Stop Daemons for Low-Level Services",stopGroup.title);
assertNotNull(stopGroup.parallelScheduler);
assertEquals(ParallelScheduler.DEFAULT_MAX_DEGREE_OF_PARALLELISM,stopGroup.parallelScheduler.maxDegreeOfParallelism);
group=groups.get(4);
assertEquals(UpdateStackGrouping.class,group.getClass());
updateStackGroup=(UpdateStackGrouping)group;
assertEquals("Update Desired Stack Id",updateStackGroup.title);
assertNull(updateStackGroup.parallelScheduler);
group=groups.get(5);
assertEquals(ClusterGrouping.class,group.getClass());
clusterGroup=(ClusterGrouping)group;
assertEquals("Set Version On All Hosts",clusterGroup.title);
assertNull(clusterGroup.parallelScheduler);
group=groups.get(6);
assertEquals(RestartGrouping.class,group.getClass());
restartGroup=(RestartGrouping)group;
assertEquals("Zookeeper",restartGroup.title);
assertNull(restartGroup.parallelScheduler);
group=groups.get(7);
assertEquals(RestartGrouping.class,group.getClass());
restartGroup=(RestartGrouping)group;
assertEquals("HDFS",restartGroup.title);
assertNotNull(restartGroup.parallelScheduler);
assertEquals(2,restartGroup.parallelScheduler.maxDegreeOfParallelism);
group=groups.get(8);
assertEquals(RestartGrouping.class,group.getClass());
restartGroup=(RestartGrouping)group;
assertEquals("MR and YARN",restartGroup.title);
assertNotNull(restartGroup.parallelScheduler);
assertEquals(ParallelScheduler.DEFAULT_MAX_DEGREE_OF_PARALLELISM,restartGroup.parallelScheduler.maxDegreeOfParallelism);
group=groups.get(9);
assertEquals(ClusterGrouping.class,group.getClass());
clusterGroup=(ClusterGrouping)group;
assertEquals("Finalize {{direction.text.proper}}",clusterGroup.title);
assertNull(clusterGroup.parallelScheduler);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGroupOrdersForRolling(){
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.size() > 0);
assertTrue(upgrades.containsKey("upgrade_test_checks"));
UpgradePack upgrade=upgrades.get("upgrade_test_checks");
PrerequisiteCheckConfig prerequisiteCheckConfig=upgrade.getPrerequisiteCheckConfig();
assertNotNull(prerequisiteCheckConfig);
assertNotNull(prerequisiteCheckConfig.globalProperties);
assertTrue(prerequisiteCheckConfig.getGlobalProperties().containsKey("global-property-1"));
assertEquals("global-value-1",prerequisiteCheckConfig.getGlobalProperties().get("global-property-1"));
assertNotNull(prerequisiteCheckConfig.prerequisiteCheckProperties);
assertEquals(2,prerequisiteCheckConfig.prerequisiteCheckProperties.size());
assertNotNull(prerequisiteCheckConfig.getCheckProperties("org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck"));
assertTrue(prerequisiteCheckConfig.getCheckProperties("org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck").containsKey("dfs-protocols-regex"));
assertEquals("^([^:]*dfs|wasb|ecs):.*",prerequisiteCheckConfig.getCheckProperties("org.apache.ambari.server.checks.ServicesMapReduceDistributedCacheCheck").get("dfs-protocols-regex"));
assertNotNull(prerequisiteCheckConfig.getCheckProperties("org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck"));
assertTrue(prerequisiteCheckConfig.getCheckProperties("org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck").containsKey("dfs-protocols-regex"));
assertEquals("^([^:]*dfs|wasb|ecs):.*",prerequisiteCheckConfig.getCheckProperties("org.apache.ambari.server.checks.ServicesTezDistributedCacheCheck").get("dfs-protocols-regex"));
List expected_up=Arrays.asList("PRE_CLUSTER","ZOOKEEPER","CORE_MASTER","SERVICE_CHECK_1","CORE_SLAVES","SERVICE_CHECK_2","POST_CLUSTER");
List expected_down=Arrays.asList("PRE_CLUSTER","CORE_SLAVES","SERVICE_CHECK_2","CORE_MASTER","SERVICE_CHECK_1","ZOOKEEPER","POST_CLUSTER");
Grouping serviceCheckGroup=null;
int i=0;
List groups=upgrade.getGroups(Direction.UPGRADE);
for ( Grouping g : groups) {
assertEquals(expected_up.get(i),g.name);
i++;
if (g.name.equals("SERVICE_CHECK_1")) {
serviceCheckGroup=g;
}
}
List expected_priority=Arrays.asList("HDFS","HBASE","YARN");
assertNotNull(serviceCheckGroup);
assertEquals(ServiceCheckGrouping.class,serviceCheckGroup.getClass());
ServiceCheckGrouping scg=(ServiceCheckGrouping)serviceCheckGroup;
Set priorities=scg.getPriorities();
assertEquals(3,priorities.size());
i=0;
for ( String s : priorities) {
assertEquals(expected_priority.get(i++),s);
}
i=0;
groups=upgrade.getGroups(Direction.DOWNGRADE);
for ( Grouping g : groups) {
assertEquals(expected_down.get(i),g.name);
i++;
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testDirectionForRolling() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.size() > 0);
assertTrue(upgrades.containsKey("upgrade_direction"));
UpgradePack upgrade=upgrades.get("upgrade_direction");
assertTrue(upgrade.getType() == UpgradeType.ROLLING);
List groups=upgrade.getGroups(Direction.UPGRADE);
assertEquals(4,groups.size());
Grouping group=groups.get(2);
assertEquals(ClusterGrouping.class,group.getClass());
ClusterGrouping cluster_group=(ClusterGrouping)group;
assertEquals("Run on All",group.title);
cluster_group=(ClusterGrouping)groups.get(3);
List stages=cluster_group.executionStages;
assertEquals(3,stages.size());
assertNotNull(stages.get(0).intendedDirection);
assertEquals(Direction.DOWNGRADE,stages.get(0).intendedDirection);
groups=upgrade.getGroups(Direction.DOWNGRADE);
assertEquals(3,groups.size());
group=groups.get(1);
assertEquals(ClusterGrouping.class,group.getClass());
assertEquals("Run on All",group.title);
group=groups.get(2);
assertEquals(ClusterGrouping.class,group.getClass());
assertEquals("Finalize Upgrade",group.title);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier PublicFieldVerifier HybridVerifier
@Test public void testUpgradeParsing() throws Exception {
Map upgrades=ambariMetaInfo.getUpgradePacks("HDP","2.1.1");
assertTrue(upgrades.size() > 0);
assertTrue(upgrades.containsKey("upgrade_test"));
UpgradePack upgrade=upgrades.get("upgrade_test");
assertEquals("2.2.*.*",upgrade.getTarget());
Map> expectedStages=new LinkedHashMap>(){
{
put("ZOOKEEPER",Arrays.asList("ZOOKEEPER_SERVER"));
put("HDFS",Arrays.asList("NAMENODE","DATANODE"));
}
}
;
int i=0;
for ( Entry> entry : expectedStages.entrySet()) {
assertTrue(upgrade.getTasks().containsKey(entry.getKey()));
assertEquals(i++,indexOf(upgrade.getTasks(),entry.getKey()));
assertEquals(entry.getValue().size(),upgrade.getTasks().get(entry.getKey()).size());
int j=0;
for ( String comp : entry.getValue()) {
assertEquals(j++,indexOf(upgrade.getTasks().get(entry.getKey()),comp));
}
}
assertTrue(upgrade.getTasks().containsKey("HDFS"));
assertTrue(upgrade.getTasks().get("HDFS").containsKey("NAMENODE"));
ProcessingComponent pc=upgrade.getTasks().get("HDFS").get("NAMENODE");
assertNotNull(pc.preTasks);
assertNotNull(pc.postTasks);
assertNotNull(pc.tasks);
assertNull(pc.preDowngradeTasks);
assertNull(pc.postDowngradeTasks);
assertEquals(1,pc.tasks.size());
assertEquals(Task.Type.RESTART,pc.tasks.get(0).getType());
assertEquals(RestartTask.class,pc.tasks.get(0).getClass());
assertTrue(upgrade.getTasks().containsKey("ZOOKEEPER"));
assertTrue(upgrade.getTasks().get("ZOOKEEPER").containsKey("ZOOKEEPER_SERVER"));
pc=upgrade.getTasks().get("HDFS").get("DATANODE");
assertNotNull(pc.preDowngradeTasks);
assertEquals(0,pc.preDowngradeTasks.size());
assertNotNull(pc.postDowngradeTasks);
assertEquals(1,pc.postDowngradeTasks.size());
pc=upgrade.getTasks().get("ZOOKEEPER").get("ZOOKEEPER_SERVER");
assertNotNull(pc.preTasks);
assertEquals(1,pc.preTasks.size());
assertNotNull(pc.postTasks);
assertEquals(1,pc.postTasks.size());
assertNotNull(pc.tasks);
assertEquals(1,pc.tasks.size());
pc=upgrade.getTasks().get("YARN").get("NODEMANAGER");
assertNotNull(pc.preTasks);
assertEquals(2,pc.preTasks.size());
Task t=pc.preTasks.get(1);
assertEquals(ConfigureTask.class,t.getClass());
ConfigureTask ct=(ConfigureTask)t;
assertEquals("hdp_2_1_1_nm_pre_upgrade",ct.getId());
}
Class: org.apache.ambari.server.state.stack.upgrade.RepositoryVersionHelperTest InternalCallVerifier EqualityVerifier
@Test public void testSerializeOperatingSystems() throws Exception {
final List repositories=new ArrayList();
final RepositoryInfo repository=new RepositoryInfo();
repository.setBaseUrl("baseurl");
repository.setOsType("os");
repository.setRepoId("repoId");
repositories.add(repository);
final String serialized=helper.serializeOperatingSystems(repositories);
Assert.assertEquals("[{\"repositories\":[{\"Repositories/base_url\":\"baseurl\",\"Repositories/repo_id\":\"repoId\"}],\"OperatingSystems/os_type\":\"os\"}]",serialized);
}
Class: org.apache.ambari.server.state.stack.upgrade.StageWrapperBuilderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
/**
* Tests that a new task was inserted into the upgrade which will check for
* skipped failures and display a summary.
* @throws Exception
*/
@Test public void testAutoSkipCheckInserted() throws Exception {
UpgradeContext upgradeContext=new UpgradeContext(null,null,null,null,Direction.UPGRADE,UpgradeType.ROLLING);
upgradeContext.setAutoSkipComponentFailures(true);
upgradeContext.setAutoSkipServiceCheckFailures(true);
Grouping grouping=new Grouping();
grouping.skippable=true;
MockStageWrapperBuilder builder=new MockStageWrapperBuilder(grouping);
List mockStageWrappers=new ArrayList<>();
StageWrapper mockStageWrapper=EasyMock.createNiceMock(StageWrapper.class);
mockStageWrappers.add(mockStageWrapper);
builder.setMockStageWrappers(mockStageWrappers);
List stageWrappers=builder.build(upgradeContext);
Assert.assertEquals(2,stageWrappers.size());
StageWrapper skipSummaryWrapper=stageWrappers.get(1);
Assert.assertEquals(StageWrapper.Type.SERVER_SIDE_ACTION,skipSummaryWrapper.getType());
ServerActionTask task=(ServerActionTask)(skipSummaryWrapper.getTasks().get(0).getTasks().get(0));
Assert.assertEquals(AutoSkipFailedSummaryAction.class.getName(),task.implClass);
}
Class: org.apache.ambari.server.state.svccomphost.ServiceComponentHostTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testConvertToResponse() throws AmbariException {
ServiceComponentHost sch=createNewServiceComponentHost(clusterName,"HDFS","DATANODE",hostName1,false);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLING);
sch.setStackVersion(new StackId("HDP-1.2.0"));
ServiceComponentHostResponse r=sch.convertToResponse();
Assert.assertEquals("HDFS",r.getServiceName());
Assert.assertEquals("DATANODE",r.getComponentName());
Assert.assertEquals(hostName1,r.getHostname());
Assert.assertEquals(clusterName,r.getClusterName());
Assert.assertEquals(State.INSTALLED.toString(),r.getDesiredState());
Assert.assertEquals(State.INSTALLING.toString(),r.getLiveState());
Assert.assertEquals("HDP-1.2.0",r.getStackVersion());
Assert.assertFalse(r.isStaleConfig());
StringBuilder sb=new StringBuilder();
sch.debugDump(sb);
Assert.assertFalse(sb.toString().isEmpty());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testDisableInVariousStates() throws AmbariException, InvalidStateTransitionException {
ServiceComponentHost sch=createNewServiceComponentHost(clusterName,"HDFS","DATANODE",hostName1,false);
ServiceComponentHostImpl impl=(ServiceComponentHostImpl)sch;
long timestamp=0;
HashSet validStates=new HashSet();
validStates.add(State.INSTALLED);
validStates.add(State.INSTALL_FAILED);
validStates.add(State.UNKNOWN);
validStates.add(State.DISABLED);
for ( State state : validStates) {
sch.setState(state);
ServiceComponentHostEvent disableEvent=createEvent(impl,++timestamp,ServiceComponentHostEventType.HOST_SVCCOMP_DISABLE);
impl.handleEvent(disableEvent);
Assert.assertEquals(-1,impl.getLastOpStartTime());
Assert.assertEquals(-1,impl.getLastOpLastUpdateTime());
Assert.assertEquals(-1,impl.getLastOpEndTime());
Assert.assertEquals(State.DISABLED,impl.getState());
}
HashSet invalidStates=new HashSet();
invalidStates.add(State.INIT);
invalidStates.add(State.INSTALLING);
invalidStates.add(State.STARTING);
invalidStates.add(State.STARTED);
invalidStates.add(State.STOPPING);
invalidStates.add(State.UNINSTALLING);
invalidStates.add(State.UNINSTALLED);
invalidStates.add(State.UPGRADING);
for ( State state : invalidStates) {
sch.setState(state);
ServiceComponentHostEvent disableEvent=createEvent(impl,++timestamp,ServiceComponentHostEventType.HOST_SVCCOMP_DISABLE);
boolean exceptionThrown=false;
try {
impl.handleEvent(disableEvent);
}
catch ( Exception e) {
exceptionThrown=true;
}
Assert.assertTrue("Exception not thrown on invalid event",exceptionThrown);
Assert.assertEquals(-1,impl.getLastOpStartTime());
Assert.assertEquals(-1,impl.getLastOpLastUpdateTime());
Assert.assertEquals(-1,impl.getLastOpEndTime());
}
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier
@Test public void testCanBeRemoved() throws Exception {
ServiceComponentHostImpl impl=(ServiceComponentHostImpl)createNewServiceComponentHost(clusterName,"HDFS","HDFS_CLIENT",hostName1,true);
for ( State state : State.values()) {
impl.setState(state);
if (state.isRemovableState()) {
Assert.assertTrue(impl.canBeRemoved());
}
else {
Assert.assertFalse(impl.canBeRemoved());
}
}
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testStaleConfigsAttributes() throws Exception {
String stackVersion="HDP-2.0.6";
StackId stackId=new StackId(stackVersion);
String clusterName="c2";
createCluster(stackId,clusterName);
final String hostName="h3";
Set hostNames=new HashSet();
hostNames.add(hostName);
addHostsToCluster(clusterName,hostAttributes,hostNames);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
ServiceComponentHost sch1=createNewServiceComponentHost(cluster,"HDFS","NAMENODE",hostName);
ServiceComponentHost sch2=createNewServiceComponentHost(cluster,"HDFS","DATANODE",hostName);
ServiceComponentHost sch3=createNewServiceComponentHost(cluster,"MAPREDUCE2","HISTORYSERVER",hostName);
sch1.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLING);
sch1.setStackVersion(new StackId(stackVersion));
sch2.setDesiredState(State.INSTALLED);
sch2.setState(State.INSTALLING);
sch2.setStackVersion(new StackId(stackVersion));
sch3.setDesiredState(State.INSTALLED);
sch3.setState(State.INSTALLING);
sch3.setStackVersion(new StackId(stackVersion));
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
makeConfig(cluster,"global","version1",new HashMap(){
{
put("a","b");
put("dfs_namenode_name_dir","/foo1");
put("mapred_log_dir_prefix","/foo2");
}
}
,new HashMap>());
makeConfig(cluster,"hdfs-site","version1",new HashMap(){
{
put("hdfs1","hdfs1value1");
}
}
,new HashMap>());
Map> actual=new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
put("hdfs-site",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
;
sch1.updateActualConfigs(actual);
sch2.updateActualConfigs(actual);
sch3.updateActualConfigs(actual);
makeConfig(cluster,"mapred-site","version1",new HashMap(){
{
put("a","c");
}
}
,new HashMap>(){
{
put("final",new HashMap(){
{
put("a","true");
}
}
);
}
}
);
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
Assert.assertTrue(sch3.convertToResponse().isStaleConfig());
actual=new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
put("mapred-site",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
;
sch3.setRestartRequired(false);
sch3.updateActualConfigs(actual);
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
Map> c1PropAttributes=new HashMap>();
c1PropAttributes.put("final",new HashMap());
c1PropAttributes.get("final").put("hdfs1","true");
makeConfig(cluster,"hdfs-site","version2",new HashMap(){
{
put("hdfs1","hdfs1value1");
}
}
,c1PropAttributes);
sch1.setRestartRequired(false);
sch2.setRestartRequired(false);
sch3.setRestartRequired(false);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
Map> c2PropAttributes=new HashMap>();
c2PropAttributes.put("final",new HashMap());
c2PropAttributes.get("final").put("hdfs1","false");
makeConfig(cluster,"hdfs-site","version3",new HashMap(){
{
put("hdfs1","hdfs1value1");
}
}
,c2PropAttributes);
sch1.setRestartRequired(false);
sch2.setRestartRequired(false);
sch3.setRestartRequired(false);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
makeConfig(cluster,"hdfs-site","version4",new HashMap(){
{
put("hdfs1","hdfs1value1");
}
}
,new HashMap>());
sch1.setRestartRequired(false);
sch2.setRestartRequired(false);
sch3.setRestartRequired(false);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testStopInVariousStates() throws AmbariException, InvalidStateTransitionException {
ServiceComponentHost sch=createNewServiceComponentHost(clusterName,"HDFS","DATANODE",hostName1,false);
ServiceComponentHostImpl impl=(ServiceComponentHostImpl)sch;
sch.setDesiredState(State.STARTED);
sch.setState(State.INSTALLED);
long timestamp=0;
ServiceComponentHostEvent stopEvent=createEvent(impl,++timestamp,ServiceComponentHostEventType.HOST_SVCCOMP_STOP);
long startTime=timestamp;
impl.handleEvent(stopEvent);
Assert.assertEquals(startTime,impl.getLastOpStartTime());
Assert.assertEquals(-1,impl.getLastOpLastUpdateTime());
Assert.assertEquals(-1,impl.getLastOpEndTime());
Assert.assertEquals(State.STOPPING,impl.getState());
sch.setState(State.INSTALL_FAILED);
boolean exceptionThrown=false;
try {
impl.handleEvent(stopEvent);
}
catch ( Exception e) {
exceptionThrown=true;
}
Assert.assertTrue("Exception not thrown on invalid event",exceptionThrown);
Assert.assertEquals(startTime,impl.getLastOpStartTime());
Assert.assertEquals(-1,impl.getLastOpLastUpdateTime());
Assert.assertEquals(-1,impl.getLastOpEndTime());
sch.setState(State.INSTALLED);
ServiceComponentHostEvent stopEvent2=createEvent(impl,++timestamp,ServiceComponentHostEventType.HOST_SVCCOMP_STOP);
startTime=timestamp;
impl.handleEvent(stopEvent2);
Assert.assertEquals(startTime,impl.getLastOpStartTime());
Assert.assertEquals(-1,impl.getLastOpLastUpdateTime());
Assert.assertEquals(-1,impl.getLastOpEndTime());
Assert.assertEquals(State.STOPPING,impl.getState());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testActualConfigs() throws Exception {
ServiceComponentHost sch=createNewServiceComponentHost(clusterName,"HDFS","NAMENODE",hostName1,false);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLING);
sch.setStackVersion(new StackId("HDP-1.2.0"));
sch.setDesiredStackVersion(new StackId("HDP-1.2.0"));
Cluster cluster=clusters.getCluster(clusterName);
final ConfigGroup configGroup=configGroupFactory.createNew(cluster,"cg1","t1","",new HashMap(),new HashMap());
configGroup.persist();
cluster.addConfigGroup(configGroup);
Map> actual=new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
put("core-site",new HashMap(){
{
put("tag","version1");
put(configGroup.getId().toString(),"version2");
}
}
);
}
}
;
sch.updateActualConfigs(actual);
Map confirm=sch.getActualConfigs();
Assert.assertEquals(2,confirm.size());
Assert.assertTrue(confirm.containsKey("global"));
Assert.assertTrue(confirm.containsKey("core-site"));
Assert.assertEquals(1,confirm.get("core-site").getConfigGroupOverrides().size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSecurityState() throws Exception {
String stackVersion="HDP-2.0.6";
StackId stackId=new StackId(stackVersion);
String clusterName="c2";
createCluster(stackId,clusterName);
final String hostName="h3";
Set hostNames=new HashSet();
hostNames.add(hostName);
addHostsToCluster(clusterName,hostAttributes,hostNames);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
HostEntity hostEntity=hostDAO.findByName(hostName);
ServiceComponentHost sch1=createNewServiceComponentHost(cluster,"HDFS","NAMENODE",hostName);
HostComponentDesiredStateDAO daoHostComponentDesiredState=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentDesiredStateEntity entityHostComponentDesiredState;
HostComponentDesiredStateEntityPK pkHostComponentDesiredState=new HostComponentDesiredStateEntityPK();
pkHostComponentDesiredState.setClusterId(cluster.getClusterId());
pkHostComponentDesiredState.setComponentName(sch1.getServiceComponentName());
pkHostComponentDesiredState.setServiceName(sch1.getServiceName());
pkHostComponentDesiredState.setHostId(hostEntity.getHostId());
HostComponentStateDAO daoHostComponentState=injector.getInstance(HostComponentStateDAO.class);
HostComponentStateEntity entityHostComponentState;
for ( SecurityState state : SecurityState.values()) {
sch1.setSecurityState(state);
entityHostComponentState=daoHostComponentState.findByIndex(cluster.getClusterId(),sch1.getServiceName(),sch1.getServiceComponentName(),hostEntity.getHostId());
Assert.assertNotNull(entityHostComponentState);
Assert.assertEquals(state,entityHostComponentState.getSecurityState());
try {
sch1.setDesiredSecurityState(state);
Assert.assertTrue(state.isEndpoint());
entityHostComponentDesiredState=daoHostComponentDesiredState.findByPK(pkHostComponentDesiredState);
Assert.assertNotNull(entityHostComponentDesiredState);
Assert.assertEquals(state,entityHostComponentDesiredState.getSecurityState());
}
catch ( AmbariException e) {
Assert.assertFalse(state.isEndpoint());
}
}
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetAndSetBasicInfo() throws AmbariException {
ServiceComponentHost sch=createNewServiceComponentHost(clusterName,"HDFS","NAMENODE",hostName1,false);
sch.setDesiredState(State.INSTALLED);
sch.setState(State.INSTALLING);
sch.setStackVersion(new StackId("HDP-1.2.0"));
sch.setDesiredStackVersion(new StackId("HDP-1.2.0"));
Assert.assertEquals(State.INSTALLING,sch.getState());
Assert.assertEquals(State.INSTALLED,sch.getDesiredState());
Assert.assertEquals("HDP-1.2.0",sch.getStackVersion().getStackId());
Assert.assertEquals("HDP-1.2.0",sch.getDesiredStackVersion().getStackId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testMaintenance() throws Exception {
String stackVersion="HDP-2.0.6";
StackId stackId=new StackId(stackVersion);
String clusterName="c2";
createCluster(stackId,clusterName);
final String hostName="h3";
Set hostNames=new HashSet();
hostNames.add(hostName);
addHostsToCluster(clusterName,hostAttributes,hostNames);
Cluster cluster=clusters.getCluster(clusterName);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
HostEntity hostEntity=hostDAO.findByName(hostName);
Assert.assertNotNull(hostEntity);
ServiceComponentHost sch1=createNewServiceComponentHost(cluster,"HDFS","NAMENODE",hostName);
ServiceComponentHost sch2=createNewServiceComponentHost(cluster,"HDFS","DATANODE",hostName);
ServiceComponentHost sch3=createNewServiceComponentHost(cluster,"MAPREDUCE2","HISTORYSERVER",hostName);
HostComponentDesiredStateEntityPK pk=new HostComponentDesiredStateEntityPK();
pk.setClusterId(Long.valueOf(cluster.getClusterId()));
pk.setComponentName(sch1.getServiceComponentName());
pk.setServiceName(sch1.getServiceName());
pk.setHostId(hostEntity.getHostId());
HostComponentDesiredStateDAO dao=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentDesiredStateEntity entity=dao.findByPK(pk);
Assert.assertEquals(MaintenanceState.OFF,entity.getMaintenanceState());
Assert.assertEquals(MaintenanceState.OFF,sch1.getMaintenanceState());
sch1.setMaintenanceState(MaintenanceState.ON);
Assert.assertEquals(MaintenanceState.ON,sch1.getMaintenanceState());
entity=dao.findByPK(pk);
Assert.assertEquals(MaintenanceState.ON,entity.getMaintenanceState());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testStaleConfigs() throws Exception {
String stackVersion="HDP-2.0.6";
StackId stackId=new StackId(stackVersion);
String clusterName="c2";
createCluster(stackId,clusterName);
final String hostName="h3";
Set hostNames=new HashSet();
hostNames.add(hostName);
addHostsToCluster(clusterName,hostAttributes,hostNames);
final HostEntity hostEntity=hostDAO.findByName(hostName);
Assert.assertNotNull(hostEntity.getHostId());
Cluster cluster=clusters.getCluster(clusterName);
Assert.assertNotNull(cluster);
helper.getOrCreateRepositoryVersion(stackId,stackId.getStackVersion());
cluster.createClusterVersion(stackId,stackId.getStackVersion(),"admin",RepositoryVersionState.UPGRADING);
ServiceComponentHost sch1=createNewServiceComponentHost(cluster,"HDFS","NAMENODE",hostName);
ServiceComponentHost sch2=createNewServiceComponentHost(cluster,"HDFS","DATANODE",hostName);
ServiceComponentHost sch3=createNewServiceComponentHost(cluster,"MAPREDUCE2","HISTORYSERVER",hostName);
sch1.setDesiredState(State.INSTALLED);
sch1.setState(State.INSTALLING);
sch1.setStackVersion(new StackId(stackVersion));
sch2.setDesiredState(State.INSTALLED);
sch2.setState(State.INSTALLING);
sch2.setStackVersion(new StackId(stackVersion));
sch3.setDesiredState(State.INSTALLED);
sch3.setState(State.INSTALLING);
sch3.setStackVersion(new StackId(stackVersion));
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
makeConfig(cluster,"global","version1",new HashMap(){
{
put("a","b");
put("dfs_namenode_name_dir","/foo1");
put("mapred_log_dir_prefix","/foo2");
}
}
,new HashMap>());
Map> actual=new HashMap>(){
{
put("global",new HashMap(){
{
put("tag","version1");
}
}
);
}
}
;
sch1.updateActualConfigs(actual);
sch2.updateActualConfigs(actual);
sch3.updateActualConfigs(actual);
makeConfig(cluster,"foo","version1",new HashMap(){
{
put("a","c");
}
}
,new HashMap>());
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
makeConfig(cluster,"hdfs-site","version1",new HashMap(){
{
put("a","b");
}
}
,new HashMap>());
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
actual.put("hdfs-site",new HashMap(){
{
put("tag","version1");
}
}
);
sch1.updateActualConfigs(actual);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
sch1.setRestartRequired(false);
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
sch2.updateActualConfigs(actual);
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
sch2.setRestartRequired(false);
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
makeConfig(cluster,"hdfs-site","version2",new HashMap(){
{
put("dfs.journalnode.http-address","http://foo");
}
}
,new HashMap>());
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
actual.get("hdfs-site").put("tag","version2");
sch1.updateActualConfigs(actual);
sch2.updateActualConfigs(actual);
sch1.setRestartRequired(false);
sch2.setRestartRequired(false);
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
final Host host=clusters.getHostsForCluster(clusterName).get(hostName);
Assert.assertNotNull(host);
final Config c=configFactory.createNew(cluster,"hdfs-site",new HashMap(){
{
put("dfs.journalnode.http-address","http://goo");
}
}
,new HashMap>());
c.setTag("version3");
c.persist();
cluster.addConfig(c);
host.addDesiredConfig(cluster.getClusterId(),true,"user",c);
ConfigGroup configGroup=configGroupFactory.createNew(cluster,"g1","t1","",new HashMap(){
{
put("hdfs-site",c);
}
}
,new HashMap(){
{
put(hostEntity.getHostId(),host);
}
}
);
configGroup.persist();
cluster.addConfigGroup(configGroup);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
actual.get("hdfs-site").put(configGroup.getId().toString(),"version3");
sch2.updateActualConfigs(actual);
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
sch2.setRestartRequired(false);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
sch1.updateActualConfigs(actual);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
sch1.setRestartRequired(false);
Assert.assertFalse(sch1.convertToResponse().isStaleConfig());
Assert.assertFalse(sch2.convertToResponse().isStaleConfig());
makeConfig(cluster,"global","version2",new HashMap(){
{
put("a","b");
put("dfs_namenode_name_dir","/foo3");
put("mapred_log_dir_prefix","/foo2");
}
}
,new HashMap>());
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
makeConfig(cluster,"core-site","version1",new HashMap(){
{
put("a","b");
put("fs.trash.interval","360");
}
}
,new HashMap>());
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
Assert.assertTrue(sch3.convertToResponse().isStaleConfig());
actual.put("core-site",new HashMap(){
{
put("tag","version1");
}
}
);
sch1.updateActualConfigs(actual);
final Config c1=configFactory.createNew(cluster,"core-site",new HashMap(){
{
put("fs.trash.interval","400");
}
}
,new HashMap>());
c1.setTag("version2");
c1.persist();
cluster.addConfig(c1);
configGroup=configGroupFactory.createNew(cluster,"g2","t2","",new HashMap(){
{
put("core-site",c1);
}
}
,new HashMap(){
{
put(hostEntity.getHostId(),host);
}
}
);
configGroup.persist();
cluster.addConfigGroup(configGroup);
Assert.assertTrue(sch1.convertToResponse().isStaleConfig());
Assert.assertTrue(sch2.convertToResponse().isStaleConfig());
Assert.assertTrue(sch3.convertToResponse().isStaleConfig());
Long id=configGroup.getId();
HashMap tags=new HashMap(2);
tags.put("tag","version1");
tags.put(id.toString(),"version2");
actual.put("core-site",tags);
sch3.updateActualConfigs(actual);
Assert.assertTrue(sch3.convertToResponse().isStaleConfig());
sch3.setRestartRequired(false);
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
cluster.deleteConfigGroup(id);
Assert.assertNull(cluster.getConfigGroups().get(id));
sch3.updateActualConfigs(actual);
Assert.assertTrue(sch3.convertToResponse().isStaleConfig());
tags.remove(id.toString());
sch3.updateActualConfigs(actual);
Assert.assertTrue(sch3.convertToResponse().isStaleConfig());
sch3.setRestartRequired(false);
Assert.assertFalse(sch3.convertToResponse().isStaleConfig());
}
Class: org.apache.ambari.server.testing.DBInconsistencyTests InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testOrphanedSCHDesiredEntityReAdd() throws Exception {
Long clusterId=helper.createCluster();
Assert.assertNotNull(clusterId);
Cluster cluster=clusters.getCluster(OrmTestHelper.CLUSTER_NAME);
Assert.assertNotNull(cluster);
helper.addHost(clusters,cluster,"h1");
helper.installHdfsService(cluster,serviceFactory,serviceComponentFactory,serviceComponentHostFactory,"h1");
Collection schList=clusters.getCluster(OrmTestHelper.CLUSTER_NAME).getServiceComponentHosts("HDFS","DATANODE");
Assert.assertNotNull(schList);
Collection scList=cluster.getService("HDFS").getServiceComponents().values();
Assert.assertNotNull(schList);
cluster.deleteService("HDFS");
List hostComponentDesiredStateEntities=hostComponentDesiredStateDAO.findAll();
Assert.assertTrue(hostComponentDesiredStateEntities == null || hostComponentDesiredStateEntities.isEmpty());
List serviceComponentDesiredStateEntities=serviceComponentDesiredStateDAO.findAll();
Assert.assertTrue(serviceComponentDesiredStateEntities == null || serviceComponentDesiredStateEntities.isEmpty());
EntityManager em=helper.getEntityManager();
final EntityTransaction txn=em.getTransaction();
txn.begin();
for ( ServiceComponentHost sch : schList) {
sch.setDesiredState(State.DISABLED);
}
for ( ServiceComponent sc : scList) {
sc.setDesiredState(State.DISABLED);
}
txn.commit();
hostComponentDesiredStateEntities=hostComponentDesiredStateDAO.findAll();
Assert.assertTrue(hostComponentDesiredStateEntities == null || hostComponentDesiredStateEntities.isEmpty());
serviceComponentDesiredStateEntities=serviceComponentDesiredStateDAO.findAll();
Assert.assertTrue(serviceComponentDesiredStateEntities == null || serviceComponentDesiredStateEntities.isEmpty());
}
InternalCallVerifier EqualityVerifier NullVerifier IgnoredMethod HybridVerifier
@Ignore @Test public void testRefreshInSameTxn() throws Exception {
Long clusterId=helper.createCluster();
Assert.assertNotNull(clusterId);
Cluster cluster=clusters.getCluster(OrmTestHelper.CLUSTER_NAME);
Assert.assertNotNull(cluster);
EntityManager em=helper.getEntityManager();
final EntityTransaction txn=em.getTransaction();
txn.begin();
ClusterEntity entity=clusterDAO.findById(clusterId);
entity.setProvisioningState(State.DISABLED);
clusterDAO.merge(entity);
Assert.assertEquals(State.DISABLED,entity.getProvisioningState());
entity=clusterDAO.findById(clusterId);
Assert.assertEquals(State.DISABLED,entity.getProvisioningState());
entity.setProvisioningState(State.INIT);
txn.commit();
entity=clusterDAO.findById(clusterId);
Assert.assertEquals(State.INIT,entity.getProvisioningState());
}
Class: org.apache.ambari.server.topology.AmbariContextTest InternalCallVerifier BooleanVerifier
@Test public void testIsTopologyResolved_True() throws Exception {
DesiredConfig testHdfsDesiredConfig1=new DesiredConfig();
testHdfsDesiredConfig1.setTag(TopologyManager.INITIAL_CONFIG_TAG);
testHdfsDesiredConfig1.setVersion(1L);
DesiredConfig testHdfsDesiredConfig2=new DesiredConfig();
testHdfsDesiredConfig2.setTag(TopologyManager.TOPOLOGY_RESOLVED_TAG);
testHdfsDesiredConfig2.setVersion(2L);
DesiredConfig testHdfsDesiredConfig3=new DesiredConfig();
testHdfsDesiredConfig3.setTag("ver123");
testHdfsDesiredConfig3.setVersion(3L);
DesiredConfig testCoreSiteDesiredConfig=new DesiredConfig();
testCoreSiteDesiredConfig.setTag("ver123");
testCoreSiteDesiredConfig.setVersion(1L);
Map> testDesiredConfigs=ImmutableMap.>builder().put("hdfs-site",ImmutableSet.of(testHdfsDesiredConfig2,testHdfsDesiredConfig3,testHdfsDesiredConfig1)).put("core-site",ImmutableSet.of(testCoreSiteDesiredConfig)).build();
expect(cluster.getAllDesiredConfigVersions()).andReturn(testDesiredConfigs).atLeastOnce();
replayAll();
boolean topologyResolved=context.isTopologyResolved(CLUSTER_ID);
assertTrue(topologyResolved);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCreateAmbariResources() throws Exception {
Capture clusterRequestCapture=new Capture();
controller.createCluster(capture(clusterRequestCapture));
expectLastCall().once();
expect(cluster.getServices()).andReturn(clusterServices).anyTimes();
Capture> serviceRequestCapture=new Capture>();
Capture> serviceComponentRequestCapture=new Capture>();
serviceResourceProvider.createServices(capture(serviceRequestCapture));
expectLastCall().once();
componentResourceProvider.createComponents(capture(serviceComponentRequestCapture));
expectLastCall().once();
Capture serviceInstallRequestCapture=new Capture();
Capture serviceStartRequestCapture=new Capture();
Capture installPredicateCapture=new Capture();
Capture startPredicateCapture=new Capture();
expect(serviceResourceProvider.updateResources(capture(serviceInstallRequestCapture),capture(installPredicateCapture))).andReturn(null).once();
expect(serviceResourceProvider.updateResources(capture(serviceStartRequestCapture),capture(startPredicateCapture))).andReturn(null).once();
replayAll();
context.createAmbariResources(topology,CLUSTER_NAME,null);
ClusterRequest clusterRequest=clusterRequestCapture.getValue();
assertEquals(CLUSTER_NAME,clusterRequest.getClusterName());
assertEquals(String.format("%s-%s",STACK_NAME,STACK_VERSION),clusterRequest.getStackVersion());
Collection serviceRequests=serviceRequestCapture.getValue();
assertEquals(2,serviceRequests.size());
Collection servicesFound=new HashSet();
for ( ServiceRequest serviceRequest : serviceRequests) {
servicesFound.add(serviceRequest.getServiceName());
assertEquals(CLUSTER_NAME,serviceRequest.getClusterName());
}
assertTrue(servicesFound.size() == 2 && servicesFound.containsAll(Arrays.asList("service1","service2")));
Collection serviceComponentRequests=serviceComponentRequestCapture.getValue();
assertEquals(3,serviceComponentRequests.size());
Map> foundServiceComponents=new HashMap>();
for ( ServiceComponentRequest componentRequest : serviceComponentRequests) {
assertEquals(CLUSTER_NAME,componentRequest.getClusterName());
String serviceName=componentRequest.getServiceName();
Collection serviceComponents=foundServiceComponents.get(serviceName);
if (serviceComponents == null) {
serviceComponents=new HashSet();
foundServiceComponents.put(serviceName,serviceComponents);
}
serviceComponents.add(componentRequest.getComponentName());
}
assertEquals(2,foundServiceComponents.size());
Collection service1Components=foundServiceComponents.get("service1");
assertEquals(2,service1Components.size());
assertTrue(service1Components.containsAll(Arrays.asList("s1Component1","s1Component2")));
Collection service2Components=foundServiceComponents.get("service2");
assertEquals(1,service2Components.size());
assertTrue(service2Components.contains("s2Component1"));
Request installRequest=serviceInstallRequestCapture.getValue();
Set> installPropertiesSet=installRequest.getProperties();
assertEquals(1,installPropertiesSet.size());
Map installProperties=installPropertiesSet.iterator().next();
assertEquals(CLUSTER_NAME,installProperties.get(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID));
assertEquals("INSTALLED",installProperties.get(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
assertEquals(new EqualsPredicate(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID,CLUSTER_NAME),installPredicateCapture.getValue());
Request startRequest=serviceStartRequestCapture.getValue();
Set> startPropertiesSet=startRequest.getProperties();
assertEquals(1,startPropertiesSet.size());
Map startProperties=startPropertiesSet.iterator().next();
assertEquals(CLUSTER_NAME,startProperties.get(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID));
assertEquals("STARTED",startProperties.get(ServiceResourceProvider.SERVICE_SERVICE_STATE_PROPERTY_ID));
assertEquals(new EqualsPredicate(ServiceResourceProvider.SERVICE_CLUSTER_NAME_PROPERTY_ID,CLUSTER_NAME),installPredicateCapture.getValue());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testRegisterHostWithConfigGroup_createNewConfigGroup() throws Exception {
expect(cluster.getConfigGroups()).andReturn(Collections.emptyMap()).once();
expect(clusterController.ensureResourceProvider(Resource.Type.ConfigGroup)).andReturn(configGroupResourceProvider).once();
expect(configGroupResourceProvider.createResources(capture(configGroupRequestCapture))).andReturn(null).once();
configHelper.moveDeprecatedGlobals(stackId,group1Configuration.getFullProperties(1),CLUSTER_NAME);
replayAll();
context.registerHostWithConfigGroup(HOST1,topology,HOST_GROUP_1);
Set configGroupRequests=configGroupRequestCapture.getValue();
assertEquals(1,configGroupRequests.size());
ConfigGroupRequest configGroupRequest=configGroupRequests.iterator().next();
assertEquals(CLUSTER_NAME,configGroupRequest.getClusterName());
assertEquals("testBP:group1",configGroupRequest.getGroupName());
assertEquals("service1",configGroupRequest.getTag());
assertEquals("Host Group Configuration",configGroupRequest.getDescription());
Collection requestHosts=configGroupRequest.getHosts();
requestHosts.retainAll(group1Hosts);
assertEquals(group1Hosts.size(),requestHosts.size());
Map requestConfig=configGroupRequest.getConfigs();
assertEquals(1,requestConfig.size());
Config type1Config=requestConfig.get("type1");
assertEquals("type1",type1Config.getType());
assertEquals("group1",type1Config.getTag());
Map requestProps=type1Config.getProperties();
assertEquals(3,requestProps.size());
assertEquals("val1.2",requestProps.get("prop1"));
assertEquals("val2",requestProps.get("prop2"));
assertEquals("val3",requestProps.get("prop3"));
}
InternalCallVerifier BooleanVerifier
@Test public void testIsTopologyResolved_WrongOrder_False() throws Exception {
DesiredConfig testHdfsDesiredConfig1=new DesiredConfig();
testHdfsDesiredConfig1.setTag(TopologyManager.INITIAL_CONFIG_TAG);
testHdfsDesiredConfig1.setVersion(2L);
DesiredConfig testHdfsDesiredConfig2=new DesiredConfig();
testHdfsDesiredConfig2.setTag(TopologyManager.TOPOLOGY_RESOLVED_TAG);
testHdfsDesiredConfig2.setVersion(1L);
DesiredConfig testHdfsDesiredConfig3=new DesiredConfig();
testHdfsDesiredConfig3.setTag("ver123");
testHdfsDesiredConfig3.setVersion(3L);
DesiredConfig testCoreSiteDesiredConfig=new DesiredConfig();
testCoreSiteDesiredConfig.setTag("ver123");
testCoreSiteDesiredConfig.setVersion(1L);
Map> testDesiredConfigs=ImmutableMap.>builder().put("hdfs-site",ImmutableSet.of(testHdfsDesiredConfig2,testHdfsDesiredConfig3,testHdfsDesiredConfig1)).put("core-site",ImmutableSet.of(testCoreSiteDesiredConfig)).build();
expect(cluster.getAllDesiredConfigVersions()).andReturn(testDesiredConfigs).atLeastOnce();
replayAll();
boolean topologyResolved=context.isTopologyResolved(CLUSTER_ID);
assertFalse(topologyResolved);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsTopologyResolved_False() throws Exception {
DesiredConfig testHdfsDesiredConfig1=new DesiredConfig();
testHdfsDesiredConfig1.setTag("ver1222");
testHdfsDesiredConfig1.setVersion(1L);
DesiredConfig testCoreSiteDesiredConfig=new DesiredConfig();
testCoreSiteDesiredConfig.setTag("ver123");
testCoreSiteDesiredConfig.setVersion(1L);
Map> testDesiredConfigs=ImmutableMap.>builder().put("hdfs-site",ImmutableSet.of(testHdfsDesiredConfig1)).put("core-site",ImmutableSet.of(testCoreSiteDesiredConfig)).build();
expect(cluster.getAllDesiredConfigVersions()).andReturn(testDesiredConfigs).atLeastOnce();
replayAll();
boolean topologyResolved=context.isTopologyResolved(CLUSTER_ID);
assertFalse(topologyResolved);
}
Class: org.apache.ambari.server.topology.AsyncCallableServiceTest InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testCallableServiceShouldRetryTaskExecutionTillTimeoutExceededWhenTaskThrowsException() throws Exception {
expect(taskMock.call()).andThrow(new IllegalStateException("****************** TESTING ****************")).times(2,3);
replay(taskMock);
asyncCallableService=new AsyncCallableService(taskMock,timeout,delay,Executors.newScheduledThreadPool(2));
Boolean serviceResult=asyncCallableService.call();
verify();
Assert.assertNotNull("Service result must not be null",serviceResult);
Assert.assertFalse("The expected boolean result is 'false'!",serviceResult);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testCallableServiceShouldCancelTaskWhenTaskHangsAndTimeoutExceeded() throws Exception {
Callable hangingTask=new Callable(){
@Override public Boolean call() throws Exception {
Thread.sleep(10000000);
return false;
}
}
;
asyncCallableService=new AsyncCallableService(hangingTask,timeout,delay,Executors.newScheduledThreadPool(2));
Boolean serviceResult=asyncCallableService.call();
Assert.assertNotNull("Service result must not be null",serviceResult);
Assert.assertFalse("The expected boolean result is 'false'!",serviceResult);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testCallableServiceShouldExitWhenTaskCompleted() throws Exception {
expect(taskMock.call()).andReturn(Boolean.TRUE).times(1);
replay(taskMock);
asyncCallableService=new AsyncCallableService(taskMock,timeout,delay,Executors.newScheduledThreadPool(2));
Boolean serviceResult=asyncCallableService.call();
verify();
Assert.assertNotNull("Service result must not be null",serviceResult);
Assert.assertTrue(serviceResult);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testShouldAsyncCallableServiceRetryExecutionWhenTaskThrowsException() throws Exception {
Callable hangingTask=new Callable(){
@Override public Boolean call() throws Exception {
throw new IllegalStateException("****************** TESTING ****************");
}
}
;
asyncCallableService=new AsyncCallableService(hangingTask,timeout,delay,Executors.newScheduledThreadPool(2));
Boolean serviceResult=asyncCallableService.call();
Assert.assertNotNull("Service result must not be null",serviceResult);
Assert.assertFalse("The expected boolean result is 'false'!",serviceResult);
}
InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testCallableServiceShouldCancelTaskWhenTimeoutExceeded() throws Exception {
expect(taskMock.call()).andThrow(new IllegalStateException("Prerequisites are not yet satisfied!")).anyTimes();
replay(taskMock);
asyncCallableService=new AsyncCallableService(taskMock,timeout,delay,Executors.newScheduledThreadPool(1));
Boolean serviceResult=asyncCallableService.call();
verify();
Assert.assertNotNull("Service result must not be null",serviceResult);
Assert.assertFalse("The expected boolean result is 'false'!",serviceResult);
}
Class: org.apache.ambari.server.topology.BlueprintFactoryTest APIUtilityVerifier InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier HybridVerifier
@Test public void testCreateBlueprint() throws Exception {
Map props=BlueprintResourceProviderTest.getBlueprintTestProperties().iterator().next();
replay(stack,dao,entity,configEntity);
Blueprint blueprint=testFactory.createBlueprint(props,null);
assertEquals(BLUEPRINT_NAME,blueprint.getName());
assertSame(stack,blueprint.getStack());
assertEquals(2,blueprint.getHostGroups().size());
Map hostGroups=blueprint.getHostGroups();
HostGroup group1=hostGroups.get("group1");
assertEquals("group1",group1.getName());
assertEquals("1",group1.getCardinality());
Collection components=group1.getComponentNames();
assertEquals(2,components.size());
assertTrue(components.contains("component1"));
assertTrue(components.contains("component2"));
Collection services=group1.getServices();
assertEquals(2,services.size());
assertTrue(services.contains("test-service1"));
assertTrue(services.contains("test-service2"));
assertTrue(group1.containsMasterComponent());
Configuration configuration=group1.getConfiguration();
assertTrue(configuration.getProperties().isEmpty());
assertTrue(configuration.getAttributes().isEmpty());
HostGroup group2=hostGroups.get("group2");
assertEquals("group2",group2.getName());
assertEquals("2",group2.getCardinality());
components=group2.getComponentNames();
assertEquals(1,components.size());
assertTrue(components.contains("component1"));
services=group2.getServices();
assertEquals(1,services.size());
assertTrue(services.contains("test-service1"));
assertTrue(group2.containsMasterComponent());
configuration=group2.getConfiguration();
assertTrue(configuration.getProperties().isEmpty());
assertTrue(configuration.getAttributes().isEmpty());
verify(dao,entity,configEntity);
}
Class: org.apache.ambari.server.topology.BlueprintImplTest InternalCallVerifier BooleanVerifier
@Test public void testValidateConfigurations__basic_positive() throws Exception {
Stack stack=createNiceMock(Stack.class);
HostGroup group1=createMock(HostGroup.class);
HostGroup group2=createMock(HostGroup.class);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
Collection group1Components=new HashSet();
group1Components.add("c1");
group1Components.add("c2");
Set group2Components=new HashSet();
group2Components.add("c1");
group2Components.add("c3");
Collection requiredHDFSProperties=new HashSet();
requiredHDFSProperties.add(new Stack.ConfigProperty("hdfs-site","foo",null));
requiredHDFSProperties.add(new Stack.ConfigProperty("hdfs-site","bar",null));
requiredHDFSProperties.add(new Stack.ConfigProperty("hdfs-site","some_password",null));
requiredHDFSProperties.add(new Stack.ConfigProperty("category1","prop1",null));
Collection requiredService2Properties=new HashSet();
requiredService2Properties.add(new Stack.ConfigProperty("category2","prop2",null));
expect(stack.getServiceForComponent("c1")).andReturn("HDFS").atLeastOnce();
expect(stack.getServiceForComponent("c2")).andReturn("HDFS").atLeastOnce();
expect(stack.getServiceForComponent("c3")).andReturn("SERVICE2").atLeastOnce();
expect(stack.getRequiredConfigurationProperties("HDFS")).andReturn(requiredHDFSProperties).atLeastOnce();
expect(stack.getRequiredConfigurationProperties("SERVICE2")).andReturn(requiredService2Properties).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","hdfs-site","foo")).andReturn(false).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","hdfs-site","bar")).andReturn(false).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","hdfs-site","some_password")).andReturn(true).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","category1","prop1")).andReturn(false).atLeastOnce();
expect(stack.isPasswordProperty("SERVICE2","category2","prop2")).andReturn(false).atLeastOnce();
expect(group1.getConfiguration()).andReturn(EMPTY_CONFIGURATION).atLeastOnce();
expect(group1.getName()).andReturn("group1").anyTimes();
expect(group1.getComponentNames()).andReturn(group1Components).atLeastOnce();
expect(group1.getCardinality()).andReturn("1").atLeastOnce();
expect(group1.getComponents()).andReturn(Arrays.asList(new Component("c1"),new Component("c2"))).atLeastOnce();
expect(group2.getConfiguration()).andReturn(EMPTY_CONFIGURATION).atLeastOnce();
expect(group2.getName()).andReturn("group2").anyTimes();
expect(group2.getComponentNames()).andReturn(group2Components).atLeastOnce();
expect(group2.getCardinality()).andReturn("1").atLeastOnce();
expect(group2.getComponents()).andReturn(Arrays.asList(new Component("c1"),new Component("c3"))).atLeastOnce();
replay(stack,group1,group2);
Map> properties=new HashMap>();
Map hdfsProps=new HashMap();
properties.put("hdfs-site",hdfsProps);
hdfsProps.put("foo","val");
hdfsProps.put("bar","val");
Map category1Props=new HashMap();
properties.put("category1",category1Props);
category1Props.put("prop1","val");
Map category2Props=new HashMap();
properties.put("category2",category2Props);
category2Props.put("prop2","val");
Map>> attributes=new HashMap>>();
Configuration configuration=new Configuration(properties,attributes,EMPTY_CONFIGURATION);
SecurityConfiguration securityConfiguration=new SecurityConfiguration(SecurityType.KERBEROS,"testRef",null);
Blueprint blueprint=new BlueprintImpl("test",hostGroups,stack,configuration,securityConfiguration);
blueprint.validateRequiredProperties();
BlueprintEntity entity=blueprint.toEntity();
verify(stack,group1,group2);
assertTrue(entity.getSecurityType() == SecurityType.KERBEROS);
assertTrue(entity.getSecurityDescriptorReference().equals("testRef"));
}
InternalCallVerifier BooleanVerifier
@Test public void testValidateConfigurations__hostGroupConfig() throws Exception {
Stack stack=createNiceMock(Stack.class);
HostGroup group1=createMock(HostGroup.class);
HostGroup group2=createMock(HostGroup.class);
Collection hostGroups=new HashSet();
hostGroups.add(group1);
hostGroups.add(group2);
Set group1Components=new HashSet();
group1Components.add("c1");
group1Components.add("c2");
Set group2Components=new HashSet();
group2Components.add("c1");
group2Components.add("c3");
Map> group2Props=new HashMap>();
Map group2Category2Props=new HashMap();
group2Props.put("category2",group2Category2Props);
group2Category2Props.put("prop2","val");
Collection requiredHDFSProperties=new HashSet();
requiredHDFSProperties.add(new Stack.ConfigProperty("hdfs-site","foo",null));
requiredHDFSProperties.add(new Stack.ConfigProperty("hdfs-site","bar",null));
requiredHDFSProperties.add(new Stack.ConfigProperty("hdfs-site","some_password",null));
requiredHDFSProperties.add(new Stack.ConfigProperty("category1","prop1",null));
Collection requiredService2Properties=new HashSet();
requiredService2Properties.add(new Stack.ConfigProperty("category2","prop2",null));
expect(stack.getServiceForComponent("c1")).andReturn("HDFS").atLeastOnce();
expect(stack.getServiceForComponent("c2")).andReturn("HDFS").atLeastOnce();
expect(stack.getServiceForComponent("c3")).andReturn("SERVICE2").atLeastOnce();
expect(stack.getRequiredConfigurationProperties("HDFS")).andReturn(requiredHDFSProperties).atLeastOnce();
expect(stack.getRequiredConfigurationProperties("SERVICE2")).andReturn(requiredService2Properties).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","hdfs-site","foo")).andReturn(false).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","hdfs-site","bar")).andReturn(false).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","hdfs-site","some_password")).andReturn(true).atLeastOnce();
expect(stack.isPasswordProperty("HDFS","category1","prop1")).andReturn(false).atLeastOnce();
expect(stack.isPasswordProperty("SERVICE2","category2","prop2")).andReturn(false).atLeastOnce();
expect(group1.getConfiguration()).andReturn(EMPTY_CONFIGURATION).atLeastOnce();
expect(group1.getName()).andReturn("group1").anyTimes();
expect(group1.getComponentNames()).andReturn(group1Components).atLeastOnce();
expect(group1.getCardinality()).andReturn("1").atLeastOnce();
expect(group1.getComponents()).andReturn(Arrays.asList(new Component("c1"),new Component("c2"))).atLeastOnce();
expect(group2.getName()).andReturn("group2").anyTimes();
expect(group2.getComponentNames()).andReturn(group2Components).atLeastOnce();
expect(group2.getCardinality()).andReturn("1").atLeastOnce();
expect(group2.getComponents()).andReturn(Arrays.asList(new Component("c1"),new Component("c3"))).atLeastOnce();
Map> properties=new HashMap>();
Map hdfsProps=new HashMap();
properties.put("hdfs-site",hdfsProps);
hdfsProps.put("foo","val");
hdfsProps.put("bar","val");
Map category1Props=new HashMap();
properties.put("category1",category1Props);
category1Props.put("prop1","val");
Map>> attributes=new HashMap>>();
Configuration configuration=new Configuration(properties,attributes,EMPTY_CONFIGURATION);
Configuration group2Configuration=new Configuration(group2Props,EMPTY_ATTRIBUTES,configuration);
expect(group2.getConfiguration()).andReturn(group2Configuration).atLeastOnce();
replay(stack,group1,group2);
Blueprint blueprint=new BlueprintImpl("test",hostGroups,stack,configuration,null);
blueprint.validateRequiredProperties();
BlueprintEntity entity=blueprint.toEntity();
verify(stack,group1,group2);
assertTrue(entity.getSecurityType() == SecurityType.NONE);
assertTrue(entity.getSecurityDescriptorReference() == null);
}
Class: org.apache.ambari.server.topology.ConfigurationFactoryTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testNewSyntax() throws Exception {
ConfigurationFactory factory=new ConfigurationFactory();
Configuration configuration=factory.getConfiguration(getNewSyntaxConfigProps());
Map> properties=configuration.getProperties();
assertEquals(2,properties.size());
Map configProperties1=properties.get("foo-type");
assertEquals(2,configProperties1.size());
assertEquals("prop1Value",configProperties1.get("prop1"));
assertEquals("prop2Value",configProperties1.get("prop2"));
Map configProperties2=properties.get("bar-type");
assertEquals(1,configProperties2.size());
assertEquals("prop3Value",configProperties2.get("prop3"));
Map>> attributes=configuration.getAttributes();
assertEquals(2,attributes.size());
Map> configType1Attributes=attributes.get("foo-type");
assertEquals(3,configType1Attributes.size());
Map configType1Prop1Attributes=configType1Attributes.get("prop1");
assertEquals(2,configType1Prop1Attributes.size());
assertEquals("attribute1-prop1-value",configType1Prop1Attributes.get("attribute1"));
assertEquals("attribute2-prop1-value",configType1Prop1Attributes.get("attribute2"));
Map configType1Prop2Attributes=configType1Attributes.get("prop2");
assertEquals(1,configType1Prop2Attributes.size());
assertEquals("attribute1-prop2-value",configType1Prop2Attributes.get("attribute1"));
Map configType1Prop3Attributes=configType1Attributes.get("prop3");
assertEquals(1,configType1Prop3Attributes.size());
assertEquals("attribute1-prop3-value",configType1Prop3Attributes.get("attribute1"));
Map> configType2Attributes=attributes.get("foobar-type");
assertEquals(2,configType2Attributes.size());
Map configType2Prop1Attributes=configType2Attributes.get("prop10");
assertEquals(1,configType2Prop1Attributes.size());
assertEquals("attribute1-prop10-value",configType2Prop1Attributes.get("attribute1"));
Map configType2Prop2Attributes=configType2Attributes.get("prop11");
assertEquals(1,configType2Prop2Attributes.size());
assertEquals("attribute10-prop11-value",configType2Prop2Attributes.get("attribute10"));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testOldSyntax() throws Exception {
ConfigurationFactory factory=new ConfigurationFactory();
Configuration configuration=factory.getConfiguration(getOldSyntaxConfigProps());
assertEquals(2,configuration.getProperties().size());
Map configProperties1=configuration.getProperties().get("foo-type");
assertEquals(2,configProperties1.size());
assertEquals("prop1Value",configProperties1.get("prop1"));
assertEquals("prop2Value",configProperties1.get("prop2"));
Map configProperties2=configuration.getProperties().get("bar-type");
assertEquals(1,configProperties2.size());
assertEquals("prop3Value",configProperties2.get("prop3"));
assertTrue(configuration.getAttributes().isEmpty());
}
Class: org.apache.ambari.server.topology.ConfigurationTest InternalCallVerifier EqualityVerifier
@Test public void testGetFullProperties_noParent(){
Map> properties=new HashMap>();
Map typeProperties1=new HashMap();
typeProperties1.put("prop1","val1");
typeProperties1.put("prop2","val2");
Map typeProperties2=new HashMap();
typeProperties2.put("prop1","val1");
typeProperties2.put("prop3","val3");
properties.put("type1",typeProperties1);
properties.put("type2",typeProperties2);
Configuration configuration=new Configuration(properties,EMPTY_ATTRIBUTES);
assertEquals(properties,configuration.getFullProperties());
assertEquals(EMPTY_ATTRIBUTES,configuration.getAttributes());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetProperties_withParent(){
Map> properties=new HashMap>();
Map typeProperties1=new HashMap();
typeProperties1.put("prop1","val1");
typeProperties1.put("prop2","val2");
Map typeProperties2=new HashMap();
typeProperties2.put("prop1","val1");
typeProperties2.put("prop3","val3");
properties.put("type1",typeProperties1);
properties.put("type2",typeProperties2);
Map> parentProperties=new HashMap>();
Map parentTypeProperties1=new HashMap();
parentTypeProperties1.put("prop5","val5");
Map parentTypeProperties3=new HashMap();
parentTypeProperties3.put("prop6","val6");
parentProperties.put("type1",parentTypeProperties1);
parentProperties.put("type3",parentTypeProperties3);
Configuration parentConfiguration=new Configuration(parentProperties,EMPTY_ATTRIBUTES);
Configuration configuration=new Configuration(properties,EMPTY_ATTRIBUTES,parentConfiguration);
assertEquals(properties,configuration.getProperties());
assertEquals(EMPTY_ATTRIBUTES,configuration.getAttributes());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetPropertyValue(){
Configuration configuration=createConfigurationWithParents_PropsOnly();
assertEquals("val1.3",configuration.getPropertyValue("type1","prop1"));
assertEquals("val2.2",configuration.getPropertyValue("type1","prop2"));
assertEquals("val3.1",configuration.getPropertyValue("type1","prop3"));
assertEquals("val4.3",configuration.getPropertyValue("type2","prop4"));
assertEquals("val5.1",configuration.getPropertyValue("type2","prop5"));
assertEquals("val6.2",configuration.getPropertyValue("type1","prop6"));
assertEquals("val7.3",configuration.getPropertyValue("type3","prop7"));
assertEquals("val8.2",configuration.getPropertyValue("type3","prop8"));
assertEquals("val9.3",configuration.getPropertyValue("type1","prop9"));
assertEquals("val10.3",configuration.getPropertyValue("type4","prop10"));
assertEquals("val11.3",configuration.getPropertyValue("type4","prop11"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testRemoveProperty(){
Configuration configuration=createConfigurationWithParents_PropsOnly();
assertEquals("val3.1",configuration.removeProperty("type1","prop3"));
assertNull(configuration.getPropertyValue("type1","prop3"));
assertEquals("val9.3",configuration.removeProperty("type1","prop9"));
assertNull(configuration.getPropertyValue("type1","prop9"));
assertEquals("val1.3",configuration.removeProperty("type1","prop1"));
assertNull(configuration.getPropertyValue("type1","prop1"));
assertEquals("val4.3",configuration.removeProperty("type2","prop4"));
assertNull(configuration.getPropertyValue("type2","prop4"));
assertEquals("val2.2",configuration.removeProperty("type1","prop2"));
assertNull(configuration.getPropertyValue("type1","prop2"));
assertNull(configuration.getPropertyValue("typeXXX","XXXXX"));
assertNull(configuration.getPropertyValue("type1","XXXXX"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAttributes_noParent(){
Map>> attributes=new HashMap>>();
Map> attributeProperties=new HashMap>();
Map properties1=new HashMap();
properties1.put("prop1","val1");
properties1.put("prop2","val2");
Map properties2=new HashMap();
properties2.put("prop1","val3");
attributeProperties.put("attribute1",properties1);
attributeProperties.put("attribute2",properties2);
attributes.put("type1",attributeProperties);
Configuration configuration=new Configuration(EMPTY_PROPERTIES,attributes);
assertEquals(attributes,configuration.getAttributes());
assertEquals(EMPTY_PROPERTIES,configuration.getProperties());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetProperties_noParent(){
Map> properties=new HashMap>();
Map typeProperties1=new HashMap();
typeProperties1.put("prop1","val1");
typeProperties1.put("prop2","val2");
Map typeProperties2=new HashMap();
typeProperties2.put("prop1","val1");
typeProperties2.put("prop3","val3");
properties.put("type1",typeProperties1);
properties.put("type2",typeProperties2);
Configuration configuration=new Configuration(properties,EMPTY_ATTRIBUTES);
assertEquals(properties,configuration.getProperties());
assertEquals(EMPTY_ATTRIBUTES,configuration.getAttributes());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAttributeValue(){
Configuration configuration=createConfigurationWithParents_AttributesOnly();
assertEquals("val1.3",configuration.getAttributeValue("type1","prop1","attribute1"));
assertEquals("val2.2",configuration.getAttributeValue("type1","prop2","attribute1"));
assertEquals("val3.1",configuration.getAttributeValue("type1","prop3","attribute1"));
assertEquals("val4.3",configuration.getAttributeValue("type1","prop4","attribute2"));
assertEquals("val5.1",configuration.getAttributeValue("type1","prop5","attribute2"));
assertEquals("val6.2",configuration.getAttributeValue("type1","prop6","attribute1"));
assertEquals("val7.3",configuration.getAttributeValue("type1","prop7","attribute3"));
assertEquals("val8.2",configuration.getAttributeValue("type1","prop8","attribute3"));
assertEquals("val100.3",configuration.getAttributeValue("type2","prop100","attribute100"));
assertEquals("val101.1",configuration.getAttributeValue("type2","prop101","attribute100"));
assertEquals("val102.3",configuration.getAttributeValue("type2","prop102","attribute100"));
assertEquals("val100.2",configuration.getAttributeValue("type2","prop100","attribute101"));
assertEquals("val101.1",configuration.getAttributeValue("type2","prop101","attribute101"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetFullAttributes_withParent(){
Configuration configuration=createConfigurationWithParents_AttributesOnly();
Map>> fullAttributes=configuration.getFullAttributes();
assertEquals(2,fullAttributes.size());
Map> type1Attributes=fullAttributes.get("type1");
assertEquals(4,type1Attributes.size());
Map attribute1Properties=type1Attributes.get("attribute1");
assertEquals(5,attribute1Properties.size());
assertEquals("val1.3",attribute1Properties.get("prop1"));
assertEquals("val2.2",attribute1Properties.get("prop2"));
assertEquals("val3.1",attribute1Properties.get("prop3"));
assertEquals("val6.2",attribute1Properties.get("prop6"));
assertEquals("val9.3",attribute1Properties.get("prop9"));
Map attribute2Properties=type1Attributes.get("attribute2");
assertEquals(2,attribute2Properties.size());
assertEquals("val4.3",attribute2Properties.get("prop4"));
assertEquals("val5.1",attribute2Properties.get("prop5"));
Map attribute3Properties=type1Attributes.get("attribute3");
assertEquals(2,attribute3Properties.size());
assertEquals("val7.3",attribute3Properties.get("prop7"));
assertEquals("val8.2",attribute3Properties.get("prop8"));
Map attribute4Properties=type1Attributes.get("attribute4");
assertEquals(2,attribute4Properties.size());
assertEquals("val10.3",attribute4Properties.get("prop10"));
assertEquals("val11.3",attribute4Properties.get("prop11"));
Map> type2Attributes=fullAttributes.get("type2");
assertEquals(2,type2Attributes.size());
Map attribute100Properties=type2Attributes.get("attribute100");
assertEquals(3,attribute100Properties.size());
assertEquals("val100.3",attribute100Properties.get("prop100"));
assertEquals("val101.1",attribute100Properties.get("prop101"));
assertEquals("val102.3",attribute100Properties.get("prop102"));
Map attribute101Properties=type2Attributes.get("attribute101");
assertEquals(2,attribute101Properties.size());
assertEquals("val100.2",attribute101Properties.get("prop100"));
assertEquals("val101.1",attribute101Properties.get("prop101"));
Configuration expectedConfiguration=createConfigurationWithParents_AttributesOnly();
assertEquals(expectedConfiguration.getAttributes(),configuration.getAttributes());
assertEquals(expectedConfiguration.getParentConfiguration().getAttributes(),configuration.getParentConfiguration().getAttributes());
assertEquals(expectedConfiguration.getParentConfiguration().getParentConfiguration().getAttributes(),configuration.getParentConfiguration().getParentConfiguration().getAttributes());
assertEquals(EMPTY_PROPERTIES,configuration.getProperties());
Collection configTypes=configuration.getAllConfigTypes();
assertEquals(2,configTypes.size());
assertTrue(configTypes.containsAll(Arrays.asList("type1","type2")));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetFullProperties_withParent(){
Configuration configuration=createConfigurationWithParents_PropsOnly();
Map> fullProperties=configuration.getFullProperties();
assertEquals(4,fullProperties.size());
Map type1Props=fullProperties.get("type1");
assertEquals(5,type1Props.size());
assertEquals("val1.3",type1Props.get("prop1"));
assertEquals("val2.2",type1Props.get("prop2"));
assertEquals("val3.1",type1Props.get("prop3"));
assertEquals("val6.2",type1Props.get("prop6"));
assertEquals("val9.3",type1Props.get("prop9"));
Map type2Props=fullProperties.get("type2");
assertEquals(2,type2Props.size());
assertEquals("val4.3",type2Props.get("prop4"));
assertEquals("val5.1",type2Props.get("prop5"));
Map type3Props=fullProperties.get("type3");
assertEquals(2,type3Props.size());
assertEquals("val7.3",type3Props.get("prop7"));
assertEquals("val8.2",type3Props.get("prop8"));
Map type4Props=fullProperties.get("type4");
assertEquals(2,type4Props.size());
assertEquals("val10.3",type4Props.get("prop10"));
assertEquals("val11.3",type4Props.get("prop11"));
Configuration expectedConfiguration=createConfigurationWithParents_PropsOnly();
assertEquals(expectedConfiguration.getProperties(),configuration.getProperties());
assertEquals(expectedConfiguration.getParentConfiguration().getProperties(),configuration.getParentConfiguration().getProperties());
assertEquals(expectedConfiguration.getParentConfiguration().getParentConfiguration().getProperties(),configuration.getParentConfiguration().getParentConfiguration().getProperties());
assertEquals(EMPTY_ATTRIBUTES,configuration.getAttributes());
Collection configTypes=configuration.getAllConfigTypes();
assertEquals(4,configTypes.size());
assertTrue(configTypes.containsAll(Arrays.asList("type1","type2","type3","type4")));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetFullProperties_withParent_specifyDepth(){
Configuration configuration=createConfigurationWithParents_PropsOnly();
Map> fullProperties=configuration.getFullProperties(1);
assertEquals(4,fullProperties.size());
Map type1Props=fullProperties.get("type1");
assertEquals(4,type1Props.size());
assertEquals("val1.3",type1Props.get("prop1"));
assertEquals("val2.2",type1Props.get("prop2"));
assertEquals("val6.2",type1Props.get("prop6"));
assertEquals("val9.3",type1Props.get("prop9"));
Map type2Props=fullProperties.get("type2");
assertEquals(1,type2Props.size());
assertEquals("val4.3",type2Props.get("prop4"));
Map type3Props=fullProperties.get("type3");
assertEquals(2,type3Props.size());
assertEquals("val7.3",type3Props.get("prop7"));
assertEquals("val8.2",type3Props.get("prop8"));
Map type4Props=fullProperties.get("type4");
assertEquals(2,type4Props.size());
assertEquals("val10.3",type4Props.get("prop10"));
assertEquals("val11.3",type4Props.get("prop11"));
Configuration expectedConfiguration=createConfigurationWithParents_PropsOnly();
assertEquals(expectedConfiguration.getProperties(),configuration.getProperties());
assertEquals(expectedConfiguration.getParentConfiguration().getProperties(),configuration.getParentConfiguration().getProperties());
assertEquals(expectedConfiguration.getParentConfiguration().getParentConfiguration().getProperties(),configuration.getParentConfiguration().getParentConfiguration().getProperties());
assertEquals(EMPTY_ATTRIBUTES,configuration.getAttributes());
}
Class: org.apache.ambari.server.topology.ConfigureClusterTaskTest InternalCallVerifier BooleanVerifier
@Test public void testShouldConfigureClusterTaskLogicBeExecutedWhenRequiredHostgroupsAreResolved() throws Exception {
expect(clusterConfigurationRequest.getRequiredHostGroups()).andReturn(Collections.EMPTY_LIST);
expect(clusterTopology.getHostGroupInfo()).andReturn(Collections.EMPTY_MAP);
clusterConfigurationRequest.process();
replay(clusterConfigurationRequest,clusterTopology);
Boolean result=testSubject.call();
verify();
Assert.assertTrue(result);
}
Class: org.apache.ambari.server.topology.HostGroupInfoTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSetGetPredicate() throws Exception {
HostGroupInfo group=new HostGroupInfo("test-name");
assertNull(group.getPredicateString());
assertNull(group.getPredicate());
group.setPredicate("Hosts/host_name=awesome.host.com");
assertEquals("Hosts/host_name=awesome.host.com",group.getPredicateString());
assertEquals(new EqualsPredicate("Hosts/host_name","awesome.host.com"),group.getPredicate());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testSetGetHostNames(){
HostGroupInfo group=new HostGroupInfo("test-name");
group.addHost("host1");
assertEquals(1,group.getHostNames().size());
assertTrue(group.getHostNames().contains("host1"));
group.addHosts(Arrays.asList("host2","host3","host1"));
Collection hostNames=group.getHostNames();
assertEquals(3,hostNames.size());
assertTrue(hostNames.contains("host1"));
assertTrue(hostNames.contains("host2"));
assertTrue(hostNames.contains("host3"));
hostNames.clear();
hostNames=group.getHostNames();
assertEquals(3,hostNames.size());
assertTrue(hostNames.contains("host1"));
assertTrue(hostNames.contains("host2"));
assertTrue(hostNames.contains("host3"));
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetRequestedHostCount_hostNamesSpecified(){
HostGroupInfo group=new HostGroupInfo("test-name");
assertEquals(0,group.getRequestedHostCount());
group.addHosts(Arrays.asList("host2","host3","host1"));
assertEquals(3,group.getRequestedHostCount());
}
InternalCallVerifier EqualityVerifier
@Test public void testSetGetRequestedHostCount_explicit(){
HostGroupInfo group=new HostGroupInfo("test-name");
assertEquals(0,group.getRequestedHostCount());
group.setRequestedCount(5);
assertEquals(5,group.getRequestedHostCount());
}
InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testSetGetGetConfiguration(){
Configuration configuration=createNiceMock(Configuration.class);
HostGroupInfo group=new HostGroupInfo("test-name");
assertNull(group.getConfiguration());
group.setConfiguration(configuration);
assertSame(configuration,group.getConfiguration());
}
Class: org.apache.ambari.server.topology.RequiredPasswordValidatorTest InternalCallVerifier EqualityVerifier
@Test public void testValidate_missingPwd__defaultPwd() throws Exception {
Stack.ConfigProperty pwdProp=new Stack.ConfigProperty("test-type","pwdProp",null);
service1RequiredPwdConfigs.add(pwdProp);
TopologyValidator validator=new RequiredPasswordValidator("default-pwd");
validator.validate(topology);
assertEquals(1,topoClusterConfig.getProperties().size());
assertEquals("default-pwd",topoClusterConfig.getProperties().get("test-type").get("pwdProp"));
}
InternalCallVerifier EqualityVerifier
@Test public void testValidate_twoRequiredPwdOneSpecified__defaultPwd() throws Exception {
Stack.ConfigProperty pwdProp=new Stack.ConfigProperty("test-type","pwdProp",null);
Stack.ConfigProperty pwdProp2=new Stack.ConfigProperty("test2-type","pwdProp2",null);
service1RequiredPwdConfigs.add(pwdProp);
service3RequiredPwdConfigs.add(pwdProp2);
topoClusterConfig.getProperties().put("test2-type",Collections.singletonMap("pwdProp2","secret"));
TopologyValidator validator=new RequiredPasswordValidator("default-pwd");
validator.validate(topology);
assertEquals(2,topoClusterConfig.getProperties().size());
assertEquals("default-pwd",topoClusterConfig.getProperties().get("test-type").get("pwdProp"));
assertEquals("secret",topoClusterConfig.getProperties().get("test2-type").get("pwdProp2"));
}
InternalCallVerifier EqualityVerifier
@Test public void testValidate_multipleMissingPwd__defaultPwd() throws Exception {
Stack.ConfigProperty pwdProp=new Stack.ConfigProperty("test-type","pwdProp",null);
Stack.ConfigProperty pwdProp2=new Stack.ConfigProperty("test2-type","pwdProp2",null);
service1RequiredPwdConfigs.add(pwdProp);
service3RequiredPwdConfigs.add(pwdProp2);
TopologyValidator validator=new RequiredPasswordValidator("default-pwd");
validator.validate(topology);
assertEquals(2,topoClusterConfig.getProperties().size());
assertEquals("default-pwd",topoClusterConfig.getProperties().get("test-type").get("pwdProp"));
assertEquals("default-pwd",topoClusterConfig.getProperties().get("test2-type").get("pwdProp2"));
}
InternalCallVerifier EqualityVerifier
@Test public void testValidate_twoRequiredPwdTwoSpecified__noDefaultPwd() throws Exception {
Stack.ConfigProperty pwdProp=new Stack.ConfigProperty("test-type","pwdProp",null);
Stack.ConfigProperty pwdProp2=new Stack.ConfigProperty("test2-type","pwdProp2",null);
service1RequiredPwdConfigs.add(pwdProp);
service3RequiredPwdConfigs.add(pwdProp2);
topoClusterConfig.getProperties().put("test2-type",Collections.singletonMap("pwdProp2","secret2"));
topoClusterConfig.getProperties().put("test-type",Collections.singletonMap("pwdProp","secret1"));
TopologyValidator validator=new RequiredPasswordValidator(null);
validator.validate(topology);
assertEquals(2,topoClusterConfig.getProperties().size());
assertEquals("secret1",topoClusterConfig.getProperties().get("test-type").get("pwdProp"));
assertEquals("secret2",topoClusterConfig.getProperties().get("test2-type").get("pwdProp2"));
}
Class: org.apache.ambari.server.topology.SecurityConfigurationFactoryTest InternalCallVerifier BooleanVerifier ExceptionVerifier HybridVerifier
@Test(expected=IllegalArgumentException.class) public void testCreateInvalidSecurityType() throws Exception {
Map reuqestMap=new HashMap<>();
Map security=new HashMap<>();
security.put(SecurityConfigurationFactory.TYPE_PROPERTY_ID,"INVALID_SECURITY_TYPE");
reuqestMap.put(SecurityConfigurationFactory.SECURITY_PROPERTY_ID,security);
SecurityConfiguration securityConfiguration=testSubject.createSecurityConfigurationFromRequest(reuqestMap,false);
assertTrue(securityConfiguration.getType() == SecurityType.KERBEROS);
}
InternalCallVerifier BooleanVerifier
@Test public void testCreateKerberosSecurityTypeNone() throws Exception {
Map reuqestMap=new HashMap<>();
Map security=new HashMap<>();
security.put(SecurityConfigurationFactory.TYPE_PROPERTY_ID,SecurityType.NONE.toString());
reuqestMap.put(SecurityConfigurationFactory.SECURITY_PROPERTY_ID,security);
SecurityConfiguration securityConfiguration=testSubject.createSecurityConfigurationFromRequest(reuqestMap,false);
assertTrue(securityConfiguration.getType() == SecurityType.NONE);
}
InternalCallVerifier BooleanVerifier
@Test public void testCreateEmpty() throws Exception {
Map reuqestMap=new HashMap<>();
SecurityConfiguration securityConfiguration=testSubject.createSecurityConfigurationFromRequest(reuqestMap,false);
assertTrue(securityConfiguration == null);
}
InternalCallVerifier BooleanVerifier
@Test public void testShouldLoadKerberosDescriptorWhenKDReferenceFoundInRequest() throws Exception {
EasyMock.expect(kerberosDescriptorDAO.findByName(TEST_KERBEROS_DESCRIPTOR_REFERENCE)).andReturn(testKDEntity());
Map reuqestMap=new HashMap<>();
Map security=new HashMap<>();
security.put(SecurityConfigurationFactory.TYPE_PROPERTY_ID,SecurityType.KERBEROS.toString());
security.put(SecurityConfigurationFactory.KERBEROS_DESCRIPTOR_REFERENCE_PROPERTY_ID,TEST_KERBEROS_DESCRIPTOR_REFERENCE);
reuqestMap.put(SecurityConfigurationFactory.SECURITY_PROPERTY_ID,security);
EasyMock.replay(kerberosDescriptorDAO);
SecurityConfiguration securityConfiguration=testSubject.createSecurityConfigurationFromRequest(reuqestMap,false);
EasyMock.verify(kerberosDescriptorDAO);
assertTrue(securityConfiguration.getType() == SecurityType.KERBEROS);
}
InternalCallVerifier BooleanVerifier
@Test public void testCreateKerberosSecurityWithoutDescriptor() throws Exception {
Map reuqestMap=new HashMap<>();
Map security=new HashMap<>();
security.put(SecurityConfigurationFactory.TYPE_PROPERTY_ID,SecurityType.KERBEROS.toString());
reuqestMap.put(SecurityConfigurationFactory.SECURITY_PROPERTY_ID,security);
SecurityConfiguration securityConfiguration=testSubject.createSecurityConfigurationFromRequest(reuqestMap,false);
assertTrue(securityConfiguration.getType() == SecurityType.KERBEROS);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testShouldPersistKDWhenKDFoundInRequest() throws Exception {
Capture kdEntityCaptor=EasyMock.newCapture();
kerberosDescriptorDAO.create(capture(kdEntityCaptor));
EasyMock.replay(kerberosDescriptorDAO);
Map reuqestMap=new HashMap<>();
Map security=new HashMap<>();
security.put(SecurityConfigurationFactory.TYPE_PROPERTY_ID,SecurityType.KERBEROS.toString());
security.put(SecurityConfigurationFactory.KERBEROS_DESCRIPTOR_PROPERTY_ID,testKDReqPropertyMap());
reuqestMap.put(SecurityConfigurationFactory.SECURITY_PROPERTY_ID,security);
testSubject.createSecurityConfigurationFromRequest(reuqestMap,true);
EasyMock.verify(kerberosDescriptorDAO);
Assert.assertEquals("The persisted descriptortext is not as expected","{\"test\":\"{\\\"test\\\":\\\"test json\\\"}\"}",kdEntityCaptor.getValue().getKerberosDescriptorText());
Assert.assertNotNull("There is no generated kerberos descriptor reference in the persisting entity!",kdEntityCaptor.getValue().getName());
}
Class: org.apache.ambari.server.update.HostUpdateHelperTest InternalCallVerifier BooleanVerifier
@Test public void testInitHostChangesFileMap_SUCCESS() throws AmbariException {
EasyMockSupport easyMockSupport=new EasyMockSupport();
final Configuration mockConfiguration=easyMockSupport.createNiceMock(Configuration.class);
JsonObject cluster=new JsonObject();
JsonObject hostPairs=new JsonObject();
hostPairs.add("Host1",new JsonPrimitive("Host11"));
hostPairs.add("Host2",new JsonPrimitive("Host22"));
cluster.add("cl1",hostPairs);
expect(mockConfiguration.getHostChangesJson(null)).andReturn(cluster).once();
HostUpdateHelper hostUpdateHelper=new HostUpdateHelper(null,mockConfiguration,null);
easyMockSupport.replayAll();
hostUpdateHelper.initHostChangesFileMap();
easyMockSupport.verifyAll();
Map> hostChangesFileMap=hostUpdateHelper.getHostChangesFileMap();
Assert.assertTrue(hostChangesFileMap.get("cl1").containsKey("host1"));
Assert.assertTrue(hostChangesFileMap.get("cl1").containsKey("host2"));
Assert.assertTrue(hostChangesFileMap.get("cl1").get("host1").equals("host11"));
Assert.assertTrue(hostChangesFileMap.get("cl1").get("host2").equals("host22"));
}
Class: org.apache.ambari.server.upgrade.StackUpgradeUtilTest BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testUpgradeStack() throws Exception {
StackUpgradeUtil stackUpgradeUtil=injector.getInstance(StackUpgradeUtil.class);
String stackName="HDP";
String stackVersion="1.3.0";
String localRepoUrl="http://foo.bar";
stackUpgradeUtil.updateLocalRepo(stackName,stackVersion,localRepoUrl,null);
MetainfoDAO dao=injector.getInstance(MetainfoDAO.class);
Collection entities=dao.findAll();
Assert.assertTrue(entities.size() > 0);
for ( MetainfoEntity entity : entities) {
Assert.assertTrue(entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/"));
Assert.assertEquals(localRepoUrl,entity.getMetainfoValue());
}
reset(stackName,stackVersion);
entities=dao.findAll();
Assert.assertEquals(0,entities.size());
stackUpgradeUtil.updateLocalRepo(stackName,stackVersion,localRepoUrl,"centos6");
entities=dao.findAll();
for ( MetainfoEntity entity : entities) {
Assert.assertTrue(entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/centos6") || entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/redhat6"));
Assert.assertEquals(localRepoUrl,entity.getMetainfoValue());
}
reset(stackName,stackVersion);
entities=dao.findAll();
Assert.assertTrue(0 == entities.size());
stackUpgradeUtil.updateLocalRepo(stackName,stackVersion,localRepoUrl,"centos6,centos5");
entities=dao.findAll();
for ( MetainfoEntity entity : entities) {
Assert.assertTrue(entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/centos6") || entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/redhat6") || entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/redhat5")|| entity.getMetainfoName().startsWith("repo:/HDP/1.3.0/centos5"));
Assert.assertEquals(localRepoUrl,entity.getMetainfoValue());
}
localRepoUrl="http://newfoo.bar";
stackUpgradeUtil.updateLocalRepo(stackName,stackVersion,localRepoUrl,"centos6");
entities=dao.findAll();
boolean foundCentos6=false;
boolean foundRedhat6=false;
for ( MetainfoEntity entity : entities) {
if (-1 != entity.getMetainfoName().indexOf("centos6")) {
foundCentos6=true;
Assert.assertEquals(localRepoUrl,entity.getMetainfoValue());
}
else if (-1 != entity.getMetainfoName().indexOf("redhat6")) {
foundRedhat6=true;
Assert.assertEquals(localRepoUrl,entity.getMetainfoValue());
}
else {
Assert.assertFalse(localRepoUrl.equals(entity.getMetainfoValue()));
}
}
Assert.assertTrue(foundCentos6);
Assert.assertTrue(foundRedhat6);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog150Test InternalCallVerifier NullVerifier
@Test public void testGetSourceVersion(){
UpgradeCatalog150 upgradeCatalog150=injector.getInstance(UpgradeCatalog150.class);
Assert.assertNull(upgradeCatalog150.getSourceVersion());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testProcessDecommissionedDatanodes() throws Exception {
ClusterEntity clusterEntity=upgradeCatalogHelper.createCluster(injector,CLUSTER_NAME,desiredStackEntity);
ClusterServiceEntity clusterServiceEntity=upgradeCatalogHelper.createService(injector,clusterEntity,"HDFS");
HostEntity hostEntity=upgradeCatalogHelper.createHost(injector,clusterEntity,HOST_NAME);
ServiceComponentDesiredStateEntity componentDesiredStateEntity=new ServiceComponentDesiredStateEntity();
componentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
componentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
componentDesiredStateEntity.setComponentName("DATANODE");
componentDesiredStateEntity.setDesiredStack(desiredStackEntity);
ServiceComponentDesiredStateDAO componentDesiredStateDAO=injector.getInstance(ServiceComponentDesiredStateDAO.class);
componentDesiredStateDAO.create(componentDesiredStateEntity);
HostComponentDesiredStateDAO hostComponentDesiredStateDAO=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentDesiredStateEntity hostComponentDesiredStateEntity=new HostComponentDesiredStateEntity();
hostComponentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
hostComponentDesiredStateEntity.setComponentName("DATANODE");
hostComponentDesiredStateEntity.setAdminState(HostComponentAdminState.INSERVICE);
hostComponentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
hostComponentDesiredStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity);
hostComponentDesiredStateEntity.setHostEntity(hostEntity);
hostComponentDesiredStateEntity.setDesiredStack(desiredStackEntity);
componentDesiredStateEntity.setHostComponentDesiredStateEntities(Collections.singletonList(hostComponentDesiredStateEntity));
hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
HostComponentDesiredStateEntity entity=hostComponentDesiredStateDAO.findAll().get(0);
Assert.assertEquals(HostComponentAdminState.INSERVICE.name(),entity.getAdminState().name());
KeyValueDAO keyValueDAO=injector.getInstance(KeyValueDAO.class);
KeyValueEntity keyValueEntity=new KeyValueEntity();
keyValueEntity.setKey("decommissionDataNodesTag");
keyValueEntity.setValue("1394147791230");
keyValueDAO.create(keyValueEntity);
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
ClusterConfigEntity configEntity=new ClusterConfigEntity();
configEntity.setClusterEntity(clusterEntity);
configEntity.setClusterId(clusterEntity.getClusterId());
configEntity.setType("hdfs-exclude-file");
configEntity.setTag("1394147791230");
configEntity.setData("{\"datanodes\":\"" + HOST_NAME + "\"}");
configEntity.setTimestamp(System.currentTimeMillis());
configEntity.setStack(desiredStackEntity);
configEntity.setStack(clusterEntity.getDesiredStack());
clusterDAO.createConfig(configEntity);
UpgradeCatalog150 upgradeCatalog150=injector.getInstance(UpgradeCatalog150.class);
upgradeCatalog150.processDecommissionedDatanodes();
entity=hostComponentDesiredStateDAO.findAll().get(0);
Assert.assertEquals(HostComponentAdminState.DECOMMISSIONED.name(),entity.getAdminState().name());
keyValueEntity=keyValueDAO.findByKey("decommissionDataNodesTag");
Assert.assertNull(keyValueEntity);
keyValueEntity=keyValueDAO.findByKey("decommissionDataNodesTag-Moved");
Assert.assertNotNull(keyValueEntity);
Assert.assertEquals("1394147791230",keyValueEntity.getValue());
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before public void setup() throws Exception {
injector=Guice.createInjector(new InMemoryDefaultTestModule());
injector.getInstance(GuiceJpaInitializer.class);
upgradeCatalogHelper=injector.getInstance(UpgradeCatalogHelper.class);
injector.getInstance(AmbariMetaInfo.class);
StackDAO stackDAO=injector.getInstance(StackDAO.class);
desiredStackEntity=stackDAO.find(DESIRED_STACK.getStackName(),DESIRED_STACK.getStackVersion());
Assert.assertNotNull(desiredStackEntity);
}
BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testAddMissingLog4jConfigs() throws Exception {
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
ClusterEntity clusterEntity=upgradeCatalogHelper.createCluster(injector,CLUSTER_NAME,desiredStackEntity);
ClusterServiceEntity clusterServiceEntityMR=upgradeCatalogHelper.addService(injector,clusterEntity,"HDFS",desiredStackEntity);
Long clusterId=clusterEntity.getClusterId();
ClusterConfigEntity configEntity=clusterDAO.findConfig(clusterId,"hdfs-log4j","version1");
Assert.assertNull(configEntity);
for ( ClusterConfigMappingEntity ccme : clusterEntity.getConfigMappingEntities()) {
if ("hdfs-log4j".equals(ccme.getType())) {
Assert.fail();
}
}
UpgradeCatalog150 upgradeCatalog150=injector.getInstance(UpgradeCatalog150.class);
upgradeCatalog150.addMissingLog4jConfigs();
configEntity=clusterDAO.findConfig(clusterId,"hdfs-log4j","version1");
Assert.assertNotNull(configEntity);
clusterEntity=clusterDAO.findById(1L);
boolean failFlag=true;
for ( ClusterConfigMappingEntity ccme : clusterEntity.getConfigMappingEntities()) {
if ("hdfs-log4j".equals(ccme.getType())) {
failFlag=false;
}
}
Assert.assertFalse(failFlag);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog170Test BranchVerifier InternalCallVerifier EqualityVerifier
@Test public void testExecuteDDLUpdates_DBAccessor() throws Exception {
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
Statement statement=createNiceMock(Statement.class);
Connection connection=createNiceMock(Connection.class);
PreparedStatement stmt=createNiceMock(PreparedStatement.class);
Configuration configuration=createNiceMock(Configuration.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes();
expect(dbAccessor.getNewConnection()).andReturn(connection);
expect(connection.prepareStatement("SELECT config_id FROM clusterconfig " + "WHERE type_name = ? ORDER BY create_timestamp")).andReturn(stmt);
expect(connection.prepareStatement("UPDATE clusterconfig SET version = ? " + "WHERE config_id = ?")).andReturn(stmt);
stmt.close();
expectLastCall().times(2);
connection.close();
expectLastCall();
Capture clusterConfigAttributesColumnCapture=new Capture();
Capture hostgroupConfigAttributesColumnCapture=new Capture();
Capture blueprintConfigAttributesColumnCapture=new Capture();
Capture maskColumnCapture=new Capture();
Capture systemColumnCapture=new Capture();
Capture maskedColumnCapture=new Capture();
Capture stageCommandParamsColumnCapture=new Capture();
Capture stageHostParamsColumnCapture=new Capture();
Capture> groupsCapture=new Capture>();
Capture> alertDefinitionColumnCapture=new Capture>();
Capture> alertHistoryColumnCapture=new Capture>();
Capture> alertCurrentColumnCapture=new Capture>();
Capture> alertGroupColumnCapture=new Capture>();
Capture> alertTargetCapture=new Capture>();
Capture> alertGroupTargetCapture=new Capture>();
Capture> alertGroupingCapture=new Capture>();
Capture> alertNoticeCapture=new Capture>();
Capture> serviceConfigCapture=new Capture>();
Capture> serviceConfigMappingCapture=new Capture>();
Capture configDataClusterConfigCapture=new Capture();
Capture configDataBlueprintConfigurationCapture=new Capture();
Capture configDataHostGroupConfigurationCapture=new Capture();
dbAccessor.createTable(eq("groups"),capture(groupsCapture),eq("group_id"));
setViewExpectations(dbAccessor,maskColumnCapture,systemColumnCapture);
setViewParameterExpectations(dbAccessor,maskedColumnCapture);
setConfigAttributesColumnExpectations(dbAccessor,clusterConfigAttributesColumnCapture,"clusterconfig");
setConfigAttributesColumnExpectations(dbAccessor,hostgroupConfigAttributesColumnCapture,"hostgroup_configuration");
setConfigAttributesColumnExpectations(dbAccessor,blueprintConfigAttributesColumnCapture,"blueprint_configuration");
setStageExpectations(dbAccessor,stageCommandParamsColumnCapture,stageHostParamsColumnCapture);
dbAccessor.createTable(eq("alert_definition"),capture(alertDefinitionColumnCapture),eq("definition_id"));
dbAccessor.createTable(eq("alert_history"),capture(alertHistoryColumnCapture),eq("alert_id"));
dbAccessor.createTable(eq("alert_current"),capture(alertCurrentColumnCapture),eq("alert_id"));
dbAccessor.createTable(eq("alert_group"),capture(alertGroupColumnCapture),eq("group_id"));
dbAccessor.createTable(eq("alert_target"),capture(alertTargetCapture),eq("target_id"));
dbAccessor.createTable(eq("alert_group_target"),capture(alertGroupTargetCapture),eq("group_id"),eq("target_id"));
dbAccessor.createTable(eq("alert_grouping"),capture(alertGroupingCapture),eq("group_id"),eq("definition_id"));
dbAccessor.createTable(eq("alert_notice"),capture(alertNoticeCapture),eq("notification_id"));
dbAccessor.alterColumn(eq("clusterconfig"),capture(configDataClusterConfigCapture));
dbAccessor.alterColumn(eq("blueprint_configuration"),capture(configDataBlueprintConfigurationCapture));
dbAccessor.alterColumn(eq("hostgroup_configuration"),capture(configDataHostGroupConfigurationCapture));
dbAccessor.createTable(eq("serviceconfig"),capture(serviceConfigCapture),eq("service_config_id"));
dbAccessor.createTable(eq("serviceconfigmapping"),capture(serviceConfigMappingCapture),eq("service_config_id"),eq("config_id"));
dbAccessor.getConnection();
expectLastCall().andReturn(connection).anyTimes();
connection.createStatement();
expectLastCall().andReturn(statement).anyTimes();
statement.executeQuery(anyObject(String.class));
expectLastCall().andReturn(resultSet).anyTimes();
resultSet.next();
expectLastCall().andReturn(false).anyTimes();
resultSet.close();
expectLastCall().anyTimes();
replay(dbAccessor,configuration,resultSet,connection,stmt,statement);
AbstractUpgradeCatalog upgradeCatalog=getUpgradeCatalog(dbAccessor);
Class> c=AbstractUpgradeCatalog.class;
Field f=c.getDeclaredField("configuration");
f.setAccessible(true);
f.set(upgradeCatalog,configuration);
upgradeCatalog.executeDDLUpdates();
verify(dbAccessor,configuration,resultSet,connection,stmt,statement);
assertClusterConfigColumns(clusterConfigAttributesColumnCapture);
assertHostgroupConfigColumns(hostgroupConfigAttributesColumnCapture);
assertBlueprintConfigColumns(blueprintConfigAttributesColumnCapture);
assertViewColumns(maskColumnCapture,systemColumnCapture);
assertViewParameterColumns(maskedColumnCapture);
assertStageColumns(stageCommandParamsColumnCapture,stageHostParamsColumnCapture);
assertEquals(4,groupsCapture.getValue().size());
List columnInfoList=groupsCapture.getValue();
for ( DBAccessor.DBColumnInfo info : columnInfoList) {
if (info.getName().equals("group_name")) {
assertEquals(Integer.valueOf(255),info.getLength());
break;
}
}
assertEquals(12,alertDefinitionColumnCapture.getValue().size());
assertEquals(11,alertHistoryColumnCapture.getValue().size());
assertEquals(7,alertCurrentColumnCapture.getValue().size());
assertEquals(5,alertGroupColumnCapture.getValue().size());
assertEquals(5,alertTargetCapture.getValue().size());
assertEquals(2,alertGroupTargetCapture.getValue().size());
assertEquals(2,alertGroupingCapture.getValue().size());
assertEquals(5,alertNoticeCapture.getValue().size());
assertEquals(2,serviceConfigCapture.getValue().size());
assertEquals(2,serviceConfigMappingCapture.getValue().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void updateClusterProvisionState() throws AmbariException {
StackDAO stackDAO=injector.getInstance(StackDAO.class);
injector.getInstance(AmbariMetaInfo.class);
StackEntity desiredStackEntity=stackDAO.find(DESIRED_STACK.getStackName(),DESIRED_STACK.getStackVersion());
assertNotNull(desiredStackEntity);
ClusterEntity clusterEntity=upgradeCatalogHelper.createCluster(injector,CLUSTER_NAME,desiredStackEntity);
UpgradeCatalog170 upgradeCatalog170=injector.getInstance(UpgradeCatalog170.class);
upgradeCatalog170.updateClusterProvisionState();
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
String assertMsg="updated provisioning state should be installed";
String expectedState="INSTALLED";
String actualState=clusterDAO.findById(1L).getProvisioningState().name();
assertEquals(assertMsg,expectedState,actualState);
}
InternalCallVerifier NullVerifier
@Test public void testMoveHcatalogIntoHiveService() throws AmbariException {
UpgradeCatalog170 upgradeCatalog170=injector.getInstance(UpgradeCatalog170.class);
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO=injector.getInstance(ServiceComponentDesiredStateDAO.class);
HostComponentDesiredStateDAO hostComponentDesiredStateDAO=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentStateDAO hostComponentStateDAO=injector.getInstance(HostComponentStateDAO.class);
StackDAO stackDAO=injector.getInstance(StackDAO.class);
injector.getInstance(AmbariMetaInfo.class);
StackEntity desiredStackEntity=stackDAO.find(DESIRED_STACK.getStackName(),DESIRED_STACK.getStackVersion());
assertNotNull(desiredStackEntity);
final ClusterEntity clusterEntity=upgradeCatalogHelper.createCluster(injector,CLUSTER_NAME,desiredStackEntity);
final ClusterServiceEntity clusterServiceEntityHDFS=upgradeCatalogHelper.addService(injector,clusterEntity,"HDFS",desiredStackEntity);
final ClusterServiceEntity clusterServiceEntityHIVE=upgradeCatalogHelper.addService(injector,clusterEntity,"HIVE",desiredStackEntity);
final ClusterServiceEntity clusterServiceEntityHCATALOG=upgradeCatalogHelper.addService(injector,clusterEntity,"HCATALOG",desiredStackEntity);
final ClusterServiceEntity clusterServiceEntityWEBHCAT=upgradeCatalogHelper.addService(injector,clusterEntity,"WEBHCAT",desiredStackEntity);
final HostEntity hostEntity=upgradeCatalogHelper.createHost(injector,clusterEntity,HOST_NAME);
upgradeCatalogHelper.addComponent(injector,clusterEntity,clusterServiceEntityHDFS,hostEntity,"NAMENODE",desiredStackEntity);
upgradeCatalogHelper.addComponent(injector,clusterEntity,clusterServiceEntityHIVE,hostEntity,"HIVE_SERVER",desiredStackEntity);
upgradeCatalogHelper.addComponent(injector,clusterEntity,clusterServiceEntityHCATALOG,hostEntity,"HCAT",desiredStackEntity);
upgradeCatalogHelper.addComponent(injector,clusterEntity,clusterServiceEntityWEBHCAT,hostEntity,"WEBHCAT_SERVER",desiredStackEntity);
upgradeCatalog170.moveHcatalogIntoHiveService();
ServiceComponentDesiredStateEntityPK pkHCATInHive=new ServiceComponentDesiredStateEntityPK();
pkHCATInHive.setComponentName("HCAT");
pkHCATInHive.setClusterId(clusterEntity.getClusterId());
pkHCATInHive.setServiceName("HIVE");
ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity=serviceComponentDesiredStateDAO.findByPK(pkHCATInHive);
assertNotNull(serviceComponentDesiredStateEntity);
HostComponentDesiredStateEntityPK hcDesiredStateEntityPk=new HostComponentDesiredStateEntityPK();
hcDesiredStateEntityPk.setServiceName("HIVE");
hcDesiredStateEntityPk.setClusterId(clusterEntity.getClusterId());
hcDesiredStateEntityPk.setComponentName("HCAT");
hcDesiredStateEntityPk.setHostId(hostEntity.getHostId());
HostComponentDesiredStateEntity hcDesiredStateEntity=hostComponentDesiredStateDAO.findByPK(hcDesiredStateEntityPk);
assertNotNull(hcDesiredStateEntity);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog200Test InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testExecuteDDLUpdates() throws Exception {
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
Configuration configuration=createNiceMock(Configuration.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes();
Capture alertDefinitionIgnoreColumnCapture=new Capture();
Capture alertDefinitionDescriptionColumnCapture=new Capture();
Capture alertTargetGlobalColumnCapture=new Capture();
Capture hostComponentStateColumnCapture=new Capture();
Capture hostComponentVersionColumnCapture=new Capture();
Capture clustersSecurityTypeColumnCapture=new Capture();
Capture hostComponentStateSecurityStateColumnCapture=new Capture();
Capture hostComponentDesiredStateSecurityStateColumnCapture=new Capture();
Capture hostRoleCommandRetryColumnCapture=new Capture();
Capture stageSkippableColumnCapture=new Capture();
Capture viewparameterLabelColumnCapture=new Capture();
Capture viewparameterPlaceholderColumnCapture=new Capture();
Capture viewparameterDefaultValueColumnCapture=new Capture();
Capture serviceDesiredStateSecurityStateColumnCapture=new Capture();
Capture> clusterVersionCapture=new Capture>();
Capture> hostVersionCapture=new Capture>();
Capture valueColumnCapture=new Capture();
Capture dataValueColumnCapture=new Capture();
Capture> alertTargetStatesCapture=new Capture>();
Capture> artifactCapture=new Capture>();
Capture> kerberosPrincipalCapture=new Capture>();
Capture> kerberosPrincipalHostCapture=new Capture>();
Capture> upgradeCapture=new Capture>();
Capture> upgradeGroupCapture=new Capture>();
Capture> upgradeItemCapture=new Capture>();
dbAccessor.addColumn(eq("alert_definition"),capture(alertDefinitionIgnoreColumnCapture));
dbAccessor.addColumn(eq("alert_definition"),capture(alertDefinitionDescriptionColumnCapture));
dbAccessor.createTable(eq("alert_target_states"),capture(alertTargetStatesCapture));
dbAccessor.addColumn(eq("alert_target"),capture(alertTargetGlobalColumnCapture));
dbAccessor.addColumn(eq("hostcomponentstate"),capture(hostComponentStateColumnCapture));
dbAccessor.addColumn(eq("hostcomponentstate"),capture(hostComponentVersionColumnCapture));
dbAccessor.addColumn(eq("host_role_command"),capture(hostRoleCommandRetryColumnCapture));
dbAccessor.addColumn(eq("stage"),capture(stageSkippableColumnCapture));
dbAccessor.addColumn(eq("clusters"),capture(clustersSecurityTypeColumnCapture));
dbAccessor.addColumn(eq("hostcomponentstate"),capture(hostComponentStateSecurityStateColumnCapture));
dbAccessor.addColumn(eq("hostcomponentdesiredstate"),capture(hostComponentDesiredStateSecurityStateColumnCapture));
dbAccessor.addColumn(eq("viewparameter"),capture(viewparameterLabelColumnCapture));
dbAccessor.addColumn(eq("viewparameter"),capture(viewparameterPlaceholderColumnCapture));
dbAccessor.addColumn(eq("viewparameter"),capture(viewparameterDefaultValueColumnCapture));
dbAccessor.addColumn(eq("servicedesiredstate"),capture(serviceDesiredStateSecurityStateColumnCapture));
dbAccessor.createTable(eq("cluster_version"),capture(clusterVersionCapture),eq("id"));
dbAccessor.createTable(eq("host_version"),capture(hostVersionCapture),eq("id"));
dbAccessor.createTable(eq("upgrade"),capture(upgradeCapture),eq("upgrade_id"));
dbAccessor.createTable(eq("upgrade_group"),capture(upgradeGroupCapture),eq("upgrade_group_id"));
dbAccessor.createTable(eq("upgrade_item"),capture(upgradeItemCapture),eq("upgrade_item_id"));
dbAccessor.createTable(eq("artifact"),capture(artifactCapture),eq("artifact_name"),eq("foreign_keys"));
dbAccessor.createTable(eq("kerberos_principal"),capture(kerberosPrincipalCapture),eq("principal_name"));
dbAccessor.createTable(eq("kerberos_principal_host"),capture(kerberosPrincipalHostCapture),eq("principal_name"),eq("host_name"));
expect(dbAccessor.tableHasColumn("kerberos_principal_host","host_name")).andReturn(true).atLeastOnce();
dbAccessor.addFKConstraint(eq("kerberos_principal_host"),eq("FK_krb_pr_host_hostname"),eq("host_name"),eq("hosts"),eq("host_name"),eq(true),eq(false));
dbAccessor.addFKConstraint(eq("kerberos_principal_host"),eq("FK_krb_pr_host_principalname"),eq("principal_name"),eq("kerberos_principal"),eq("principal_name"),eq(true),eq(false));
setViewInstancePropertyExpectations(dbAccessor,valueColumnCapture);
setViewInstanceDataExpectations(dbAccessor,dataValueColumnCapture);
dbAccessor.getConnection();
expectLastCall().andReturn(connection).anyTimes();
connection.createStatement();
expectLastCall().andReturn(statement).anyTimes();
statement.executeQuery(anyObject(String.class));
expectLastCall().andReturn(resultSet).anyTimes();
replay(dbAccessor,configuration,resultSet,statement,connection);
AbstractUpgradeCatalog upgradeCatalog=getUpgradeCatalog(dbAccessor);
Class> c=AbstractUpgradeCatalog.class;
Field f=c.getDeclaredField("configuration");
f.setAccessible(true);
f.set(upgradeCatalog,configuration);
upgradeCatalog.executeDDLUpdates();
verify(dbAccessor,configuration,resultSet,statement,connection);
verifyAlertDefinitionIgnoreColumn(alertDefinitionIgnoreColumnCapture);
verifyAlertDefinitionDescriptionColumn(alertDefinitionDescriptionColumnCapture);
verifyAlertTargetGlobal(alertTargetGlobalColumnCapture);
verifyAlertTargetStatesTable(alertTargetStatesCapture);
DBAccessor.DBColumnInfo upgradeStateColumn=hostComponentStateColumnCapture.getValue();
assertEquals("upgrade_state",upgradeStateColumn.getName());
assertEquals(32,(int)upgradeStateColumn.getLength());
assertEquals(String.class,upgradeStateColumn.getType());
assertEquals("NONE",upgradeStateColumn.getDefaultValue());
assertFalse(upgradeStateColumn.isNullable());
DBAccessor.DBColumnInfo upgradeVersionColumn=hostComponentVersionColumnCapture.getValue();
assertEquals("version",upgradeVersionColumn.getName());
assertEquals(32,(int)upgradeVersionColumn.getLength());
assertEquals(String.class,upgradeVersionColumn.getType());
assertEquals("UNKNOWN",upgradeVersionColumn.getDefaultValue());
assertFalse(upgradeVersionColumn.isNullable());
DBAccessor.DBColumnInfo upgradeRetryColumn=hostRoleCommandRetryColumnCapture.getValue();
assertEquals("retry_allowed",upgradeRetryColumn.getName());
assertEquals(1,(int)upgradeRetryColumn.getLength());
assertEquals(Integer.class,upgradeRetryColumn.getType());
assertEquals(0,upgradeRetryColumn.getDefaultValue());
assertFalse(upgradeRetryColumn.isNullable());
DBAccessor.DBColumnInfo upgradeSkippableColumn=stageSkippableColumnCapture.getValue();
assertEquals("skippable",upgradeSkippableColumn.getName());
assertEquals(1,(int)upgradeSkippableColumn.getLength());
assertEquals(Integer.class,upgradeSkippableColumn.getType());
assertEquals(0,upgradeSkippableColumn.getDefaultValue());
assertFalse(upgradeSkippableColumn.isNullable());
verifyClustersSecurityType(clustersSecurityTypeColumnCapture);
verifyComponentSecurityStateColumn(hostComponentStateSecurityStateColumnCapture);
verifyComponentSecurityStateColumn(hostComponentDesiredStateSecurityStateColumnCapture);
verifyServiceSecurityStateColumn(serviceDesiredStateSecurityStateColumnCapture);
verifyViewParameterColumns(viewparameterLabelColumnCapture,viewparameterPlaceholderColumnCapture,viewparameterDefaultValueColumnCapture);
List artifactColumns=artifactCapture.getValue();
testCreateArtifactTable(artifactColumns);
testCreateKerberosPrincipalTable(kerberosPrincipalCapture.getValue());
testCreateKerberosPrincipalHostTable(kerberosPrincipalHostCapture.getValue());
assertEquals(7,clusterVersionCapture.getValue().size());
assertEquals(4,hostVersionCapture.getValue().size());
assertViewInstancePropertyColumns(valueColumnCapture);
assertViewInstanceDataColumns(dataValueColumnCapture);
assertEquals(6,upgradeCapture.getValue().size());
assertEquals(4,upgradeGroupCapture.getValue().size());
assertEquals(7,upgradeItemCapture.getValue().size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testRepositoryTable(){
final RepositoryInfo repositoryInfo1=new RepositoryInfo();
repositoryInfo1.setOsType("redhat6");
repositoryInfo1.setRepoId("HDP-2.2");
repositoryInfo1.setBaseUrl("http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.6.0");
final RepositoryInfo repositoryInfo2=new RepositoryInfo();
repositoryInfo2.setOsType("suse11");
repositoryInfo2.setRepoId("HDP-UTILS-1.1.0.20");
repositoryInfo2.setBaseUrl("http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3");
List repos=new ArrayList(){
{
add(repositoryInfo1);
add(repositoryInfo2);
}
}
;
String output=UpgradeCatalog200.repositoryTable(repos);
assertEquals(" redhat6 | HDP-2.2 | http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.2.6.0 \n" + " suse11 | HDP-UTILS-1.1.0.20 | http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/suse11sp3 \n",output);
}
InternalCallVerifier NullVerifier
/**
* Tests that Nagios is correctly removed.
* @throws Exception
*/
@Test public void testDeleteNagiosService() throws Exception {
UpgradeCatalog200 upgradeCatalog200=injector.getInstance(UpgradeCatalog200.class);
ServiceComponentDesiredStateDAO serviceComponentDesiredStateDAO=injector.getInstance(ServiceComponentDesiredStateDAO.class);
HostComponentDesiredStateDAO hostComponentDesiredStateDAO=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentStateDAO hostComponentStateDAO=injector.getInstance(HostComponentStateDAO.class);
ClusterServiceDAO clusterServiceDao=injector.getInstance(ClusterServiceDAO.class);
StackDAO stackDAO=injector.getInstance(StackDAO.class);
injector.getInstance(AmbariMetaInfo.class);
StackEntity stackEntity=stackDAO.find(DESIRED_STACK.getStackName(),DESIRED_STACK.getStackVersion());
assertNotNull(stackEntity);
final ClusterEntity clusterEntity=upgradeCatalogHelper.createCluster(injector,CLUSTER_NAME,stackEntity);
final ClusterServiceEntity clusterServiceEntityNagios=upgradeCatalogHelper.addService(injector,clusterEntity,"NAGIOS",stackEntity);
final HostEntity hostEntity=upgradeCatalogHelper.createHost(injector,clusterEntity,HOST_NAME);
upgradeCatalogHelper.addComponent(injector,clusterEntity,clusterServiceEntityNagios,hostEntity,"NAGIOS_SERVER",stackEntity);
ServiceComponentDesiredStateEntityPK pkNagiosServer=new ServiceComponentDesiredStateEntityPK();
pkNagiosServer.setComponentName("NAGIOS_SERVER");
pkNagiosServer.setClusterId(clusterEntity.getClusterId());
pkNagiosServer.setServiceName("NAGIOS");
ServiceComponentDesiredStateEntity serviceComponentDesiredStateEntity=serviceComponentDesiredStateDAO.findByPK(pkNagiosServer);
assertNotNull(serviceComponentDesiredStateEntity);
HostComponentDesiredStateEntityPK hcDesiredStateEntityPk=new HostComponentDesiredStateEntityPK();
hcDesiredStateEntityPk.setServiceName("NAGIOS");
hcDesiredStateEntityPk.setClusterId(clusterEntity.getClusterId());
hcDesiredStateEntityPk.setComponentName("NAGIOS_SERVER");
hcDesiredStateEntityPk.setHostId(hostEntity.getHostId());
HostComponentDesiredStateEntity hcDesiredStateEntity=hostComponentDesiredStateDAO.findByPK(hcDesiredStateEntityPk);
assertNotNull(hcDesiredStateEntity);
HostComponentStateEntity hcStateEntity=hostComponentStateDAO.findByIndex(clusterEntity.getClusterId(),"NAGIOS","NAGIOS_SERVER",hostEntity.getHostId());
assertNotNull(hcStateEntity);
ClusterServiceEntity clusterService=clusterServiceDao.findByClusterAndServiceNames(CLUSTER_NAME,"NAGIOS");
upgradeCatalog200.removeNagiosService();
clusterService=clusterServiceDao.findByClusterAndServiceNames(CLUSTER_NAME,"NAGIOS");
assertNull(clusterService);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog210Test APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testUpdateKerberosDescriptorArtifact_Simple() throws Exception {
final KerberosDescriptorFactory kerberosDescriptorFactory=new KerberosDescriptorFactory();
KerberosServiceDescriptor serviceDescriptor;
URL systemResourceURL=ClassLoader.getSystemResource("kerberos/test_kerberos_descriptor_simple.json");
assertNotNull(systemResourceURL);
final KerberosDescriptor kerberosDescriptorOrig=kerberosDescriptorFactory.createInstance(new File(systemResourceURL.getFile()));
assertNotNull(kerberosDescriptorOrig);
assertNotNull(kerberosDescriptorOrig.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorOrig.getService("HDFS");
assertNotNull(serviceDescriptor);
assertNotNull(serviceDescriptor.getIdentity("/hdfs"));
assertNull(serviceDescriptor.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorOrig.getService("OOZIE");
assertNotNull(serviceDescriptor);
assertNotNull(serviceDescriptor.getIdentity("/hdfs"));
assertNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
UpgradeCatalog210 upgradeMock=createMockBuilder(UpgradeCatalog210.class).createMock();
Capture> updatedData=new Capture>();
ArtifactEntity artifactEntity=createNiceMock(ArtifactEntity.class);
expect(artifactEntity.getArtifactData()).andReturn(kerberosDescriptorOrig.toMap()).once();
artifactEntity.setArtifactData(capture(updatedData));
expectLastCall().once();
replay(artifactEntity,upgradeMock);
upgradeMock.updateKerberosDescriptorArtifact(createNiceMock(ArtifactDAO.class),artifactEntity);
verify(artifactEntity,upgradeMock);
KerberosDescriptor kerberosDescriptorUpdated=new KerberosDescriptorFactory().createInstance(updatedData.getValue());
assertNotNull(kerberosDescriptorUpdated);
assertNull(kerberosDescriptorUpdated.getIdentity("/hdfs"));
serviceDescriptor=kerberosDescriptorUpdated.getService("HDFS");
assertNotNull(serviceDescriptor);
assertNull(serviceDescriptor.getIdentity("/hdfs"));
assertNotNull(serviceDescriptor.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorUpdated.getService("OOZIE");
assertNotNull(serviceDescriptor);
assertNull(serviceDescriptor.getIdentity("/hdfs"));
assertNotNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDeleteStormRestApiServiceComponent() throws Exception {
ClusterEntity clusterEntity=upgradeCatalogHelper.createCluster(injector,"c1",desiredStackEntity);
ClusterServiceEntity clusterServiceEntity=upgradeCatalogHelper.createService(injector,clusterEntity,"STORM");
HostEntity hostEntity=upgradeCatalogHelper.createHost(injector,clusterEntity,"h1");
ClusterDAO clusterDAO=injector.getInstance(ClusterDAO.class);
ClusterStateDAO clusterStateDAO=injector.getInstance(ClusterStateDAO.class);
ClusterStateEntity clusterStateEntity=new ClusterStateEntity();
clusterStateEntity.setClusterId(clusterEntity.getClusterId());
clusterStateEntity.setClusterEntity(clusterEntity);
clusterStateEntity.setCurrentStack(desiredStackEntity);
clusterStateDAO.create(clusterStateEntity);
clusterEntity.setClusterStateEntity(clusterStateEntity);
clusterDAO.merge(clusterEntity);
ServiceComponentDesiredStateEntity componentDesiredStateEntity=new ServiceComponentDesiredStateEntity();
componentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
componentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
componentDesiredStateEntity.setClusterServiceEntity(clusterServiceEntity);
componentDesiredStateEntity.setComponentName("STORM_REST_API");
componentDesiredStateEntity.setDesiredStack(desiredStackEntity);
ServiceComponentDesiredStateDAO componentDesiredStateDAO=injector.getInstance(ServiceComponentDesiredStateDAO.class);
componentDesiredStateDAO.create(componentDesiredStateEntity);
HostComponentDesiredStateDAO hostComponentDesiredStateDAO=injector.getInstance(HostComponentDesiredStateDAO.class);
HostComponentDesiredStateEntity hostComponentDesiredStateEntity=new HostComponentDesiredStateEntity();
hostComponentDesiredStateEntity.setClusterId(clusterEntity.getClusterId());
hostComponentDesiredStateEntity.setComponentName("STORM_REST_API");
hostComponentDesiredStateEntity.setAdminState(HostComponentAdminState.INSERVICE);
hostComponentDesiredStateEntity.setServiceName(clusterServiceEntity.getServiceName());
hostComponentDesiredStateEntity.setServiceComponentDesiredStateEntity(componentDesiredStateEntity);
hostComponentDesiredStateEntity.setHostEntity(hostEntity);
hostComponentDesiredStateEntity.setDesiredStack(desiredStackEntity);
hostComponentDesiredStateDAO.create(hostComponentDesiredStateEntity);
HostComponentDesiredStateEntity entity=hostComponentDesiredStateDAO.findAll().get(0);
Assert.assertEquals(HostComponentAdminState.INSERVICE.name(),entity.getAdminState().name());
UpgradeCatalog210 upgradeCatalog210=injector.getInstance(UpgradeCatalog210.class);
upgradeCatalog210.removeStormRestApiServiceComponent();
ServiceComponentDesiredStateEntityPK entityPK=new ServiceComponentDesiredStateEntityPK();
entityPK.setClusterId(clusterEntity.getClusterId());
entityPK.setServiceName("STORM");
entityPK.setComponentName("STORM_REST_API");
Assert.assertNull(componentDesiredStateDAO.findByPK(entityPK));
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testUpdateKerberosDescriptorArtifact_NoHDFSService() throws Exception {
final KerberosDescriptorFactory kerberosDescriptorFactory=new KerberosDescriptorFactory();
KerberosServiceDescriptor serviceDescriptor;
URL systemResourceURL=ClassLoader.getSystemResource("kerberos/test_kerberos_descriptor_no_hdfs.json");
assertNotNull(systemResourceURL);
final KerberosDescriptor kerberosDescriptorOrig=kerberosDescriptorFactory.createInstance(new File(systemResourceURL.getFile()));
assertNotNull(kerberosDescriptorOrig);
assertNotNull(kerberosDescriptorOrig.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorOrig.getService("HDFS");
assertNull(serviceDescriptor);
serviceDescriptor=kerberosDescriptorOrig.getService("OOZIE");
assertNotNull(serviceDescriptor);
assertNotNull(serviceDescriptor.getIdentity("/hdfs"));
assertNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
UpgradeCatalog210 upgradeMock=createMockBuilder(UpgradeCatalog210.class).createMock();
Capture> updatedData=new Capture>();
ArtifactEntity artifactEntity=createNiceMock(ArtifactEntity.class);
expect(artifactEntity.getArtifactData()).andReturn(kerberosDescriptorOrig.toMap()).once();
artifactEntity.setArtifactData(capture(updatedData));
expectLastCall().once();
replay(artifactEntity,upgradeMock);
upgradeMock.updateKerberosDescriptorArtifact(createNiceMock(ArtifactDAO.class),artifactEntity);
verify(artifactEntity,upgradeMock);
KerberosDescriptor kerberosDescriptorUpdated=new KerberosDescriptorFactory().createInstance(updatedData.getValue());
assertNotNull(kerberosDescriptorUpdated);
assertNull(kerberosDescriptorUpdated.getIdentity("/hdfs"));
serviceDescriptor=kerberosDescriptorUpdated.getService("HDFS");
assertNotNull(serviceDescriptor);
assertNull(serviceDescriptor.getIdentity("/hdfs"));
assertNotNull(serviceDescriptor.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorUpdated.getService("OOZIE");
assertNotNull(serviceDescriptor);
assertNull(serviceDescriptor.getIdentity("/hdfs"));
assertNotNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void TestUpdateHiveEnvContent(){
EasyMockSupport easyMockSupport=new EasyMockSupport();
final AmbariManagementController mockAmbariManagementController=easyMockSupport.createNiceMock(AmbariManagementController.class);
final ConfigHelper mockConfigHelper=easyMockSupport.createMock(ConfigHelper.class);
final Clusters mockClusters=easyMockSupport.createStrictMock(Clusters.class);
final Injector mockInjector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
bind(AmbariManagementController.class).toInstance(mockAmbariManagementController);
bind(ConfigHelper.class).toInstance(mockConfigHelper);
bind(Clusters.class).toInstance(mockClusters);
bind(DBAccessor.class).toInstance(createNiceMock(DBAccessor.class));
bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
}
}
);
String content="# Start HIVE_AUX_JARS_PATH \n" + "if [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n" + " export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\n"+ "elif [ -d \"/usr/hdp/current/hive-webhcat/share/hcatalog\" ]; then \n"+ " export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog\n"+ "fi\n"+ "#End HIVE_AUX_JARS_PATH";
String expectedContent="# Start HIVE_AUX_JARS_PATH \n" + "if [ \"${HIVE_AUX_JARS_PATH}\" != \"\" ]; then\n" + " if [ -f \"${HIVE_AUX_JARS_PATH}\" ]; then \n"+ " export HIVE_AUX_JARS_PATH=${HIVE_AUX_JARS_PATH}\n"+ " elif [ -d \"/usr/hdp/current/hive-webhcat/share/hcatalog\" ]; then\n"+ " export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core.jar\n"+ " fi\n"+ "elif [ -d \"/usr/hdp/current/hive-webhcat/share/hcatalog\" ]; then\n"+ " export HIVE_AUX_JARS_PATH=/usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core.jar\n"+ "fi\n"+ "#End HIVE_AUX_JARS_PATH";
String modifiedContent=mockInjector.getInstance(UpgradeCatalog210.class).updateHiveEnvContent(content);
Assert.assertEquals(modifiedContent,expectedContent);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog211Test APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetTargetVersion() throws Exception {
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
final OsFamily osFamily=createNiceMock(OsFamily.class);
Provider entityManagerProvider=initEntityManagerProvider();
replayAll();
UpgradeCatalog upgradeCatalog=getUpgradeCatalog(dbAccessor,osFamily,entityManagerProvider.get());
Assert.assertEquals("2.1.1",upgradeCatalog.getTargetVersion());
verifyAll();
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetSourceVersion(){
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
final OsFamily osFamily=createNiceMock(OsFamily.class);
Provider entityManagerProvider=initEntityManagerProvider();
replayAll();
UpgradeCatalog upgradeCatalog=getUpgradeCatalog(dbAccessor,osFamily,entityManagerProvider.get());
Assert.assertEquals("2.1.0",upgradeCatalog.getSourceVersion());
verifyAll();
}
InternalCallVerifier BooleanVerifier
@Test public void testExecuteDDLUpdates() throws Exception {
Injector injector=initInjector();
try {
Provider entityManagerProvider=initEntityManagerProvider();
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
final OsFamily osFamily=createNiceMock(OsFamily.class);
Configuration configuration=createNiceMock(Configuration.class);
Connection connection=createNiceMock(Connection.class);
Statement statement=createNiceMock(Statement.class);
ResultSet resultSet=createNiceMock(ResultSet.class);
expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes();
expect(configuration.getDatabaseType()).andReturn(DatabaseType.DERBY).anyTimes();
dbAccessor.getConnection();
expectLastCall().andReturn(connection).anyTimes();
connection.createStatement();
expectLastCall().andReturn(statement).anyTimes();
statement.executeQuery("SELECT COUNT(*) from ambari_sequences where sequence_name='hostcomponentstate_id_seq'");
expectLastCall().andReturn(resultSet).atLeastOnce();
ResultSet rs1=createNiceMock(ResultSet.class);
expect(rs1.next()).andReturn(Boolean.TRUE).once();
statement.executeQuery(anyObject(String.class));
expectLastCall().andReturn(rs1).anyTimes();
Capture queryCapture=new Capture();
dbAccessor.executeQuery(capture(queryCapture));
expectLastCall().once();
dbAccessor.setColumnNullable("viewinstanceproperty","value",true);
expectLastCall().once();
dbAccessor.setColumnNullable("viewinstancedata","value",true);
expectLastCall().once();
replayAll();
AbstractUpgradeCatalog upgradeCatalog=getUpgradeCatalog(dbAccessor,osFamily,entityManagerProvider.get());
Class> c=AbstractUpgradeCatalog.class;
Field f=c.getDeclaredField("configuration");
f.setAccessible(true);
f.set(upgradeCatalog,configuration);
f=UpgradeCatalog211.class.getDeclaredField("m_hcsId");
f.setAccessible(true);
f.set(upgradeCatalog,new AtomicLong(1001));
upgradeCatalog.executeDDLUpdates();
verifyAll();
Assert.assertTrue(queryCapture.hasCaptured());
Assert.assertTrue(queryCapture.getValue().contains("1001"));
}
finally {
destroyInjector(injector);
}
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateKerberosConfiguration() throws Exception {
final AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
final OsFamily osFamily=createNiceMock(OsFamily.class);
final Map propertiesKerberosEnv=new HashMap(){
{
put("create_attributes_template","create_attributes_template content");
put("realm","EXAMPLE.COM");
put("container_dn","");
put("ldap_url","");
put("encryption_types","aes des3-cbc-sha1 rc4 des-cbc-md5");
put("kdc_host","c6407.ambari.apache.org");
put("admin_server_host","c6407.ambari.apache.org");
put("kdc_type","mit-kdc");
}
}
;
final Config configKerberosEnv=createNiceMock(Config.class);
expect(configKerberosEnv.getProperties()).andReturn(propertiesKerberosEnv).anyTimes();
expect(configKerberosEnv.getTag()).andReturn("tag1").anyTimes();
final Cluster cluster=createNiceMock(Cluster.class);
expect(cluster.getDesiredConfigByType("kerberos-env")).andReturn(configKerberosEnv).once();
final Injector injector=Guice.createInjector(new AbstractModule(){
@Override protected void configure(){
bind(AmbariManagementController.class).toInstance(controller);
bind(DBAccessor.class).toInstance(dbAccessor);
bind(OsFamily.class).toInstance(osFamily);
}
}
);
expect(cluster.getConfigsByType("kerberos-env")).andReturn(Collections.singletonMap("tag1",configKerberosEnv)).once();
expect(cluster.getDesiredConfigByType("kerberos-env")).andReturn(configKerberosEnv).once();
Capture captureCR=new Capture();
Capture clusterCapture=newCapture();
Capture typeCapture=newCapture();
Capture propertiesCapture=newCapture();
Capture tagCapture=newCapture();
Capture attributesCapture=newCapture();
expect(controller.createConfig(capture(clusterCapture),capture(typeCapture),capture(propertiesCapture),capture(tagCapture),capture(attributesCapture))).andReturn(createNiceMock(Config.class)).once();
replayAll();
injector.getInstance(UpgradeCatalog211.class).updateKerberosConfigurations(cluster);
verifyAll();
Map capturedCRProperties=propertiesCapture.getValue();
Assert.assertNotNull(capturedCRProperties);
Assert.assertFalse(capturedCRProperties.containsKey("create_attributes_template"));
Assert.assertTrue(capturedCRProperties.containsKey("ad_create_attributes_template"));
for ( String property : propertiesKerberosEnv.keySet()) {
if ("create_attributes_template".equals(property)) {
Assert.assertEquals("create_attributes_template/ad_create_attributes_template",propertiesKerberosEnv.get(property),capturedCRProperties.get("ad_create_attributes_template"));
}
else {
Assert.assertEquals(property,propertiesKerberosEnv.get(property),capturedCRProperties.get(property));
}
}
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog212Test InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testShouldPerformPreDMLLogicIfClusterNameColumnExists() throws Exception {
reset(dbAccessor);
expect(dbAccessor.getConnection()).andReturn(connection).anyTimes();
expect(connection.createStatement()).andReturn(statement);
Capture tableNameCaptor=newCapture();
Capture columnNameCaptor=newCapture();
expect(dbAccessor.tableHasColumn(capture(tableNameCaptor),capture(columnNameCaptor))).andReturn(true);
expect(statement.executeQuery(anyString())).andReturn(resultSet);
statement.close();
expect(resultSet.next()).andReturn(false);
resultSet.close();
replay(dbAccessor,connection,statement,resultSet);
testSubject.executePreDMLUpdates();
Assert.assertNotNull("The table name hasn't been captured",tableNameCaptor.getValue());
Assert.assertEquals("The table name is not as expected",TOPOLOGY_REQUEST_TABLE,tableNameCaptor.getValue());
Assert.assertNotNull("The column name hasn't been captured",columnNameCaptor.getValue());
Assert.assertEquals("The column name is not as expected",TOPOLOGY_REQUEST_CLUSTER_NAME_COLUMN,columnNameCaptor.getValue());
verify(dbAccessor,statement,resultSet);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testShouldSkipPreDMLLogicIfClusterNameColumnDoesNotExist() throws Exception {
reset(dbAccessor);
Capture tableNameCaptor=newCapture();
Capture columnNameCaptor=newCapture();
expect(dbAccessor.tableHasColumn(capture(tableNameCaptor),capture(columnNameCaptor))).andReturn(false);
replay(dbAccessor);
testSubject.executePreDMLUpdates();
Assert.assertNotNull("The table name hasn't been captured",tableNameCaptor.getValue());
Assert.assertEquals("The table name is not as expected",TOPOLOGY_REQUEST_TABLE,tableNameCaptor.getValue());
Assert.assertNotNull("The column name hasn't been captured",columnNameCaptor.getValue());
Assert.assertEquals("The column name is not as expected",TOPOLOGY_REQUEST_CLUSTER_NAME_COLUMN,columnNameCaptor.getValue());
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog220Test InternalCallVerifier BooleanVerifier
@Test public void testAmsHbaseSiteUpdateConfigs() throws Exception {
Map oldPropertiesAmsHbaseSite=new HashMap(){
{
put("zookeeper.session.timeout.localHBaseCluster",String.valueOf(20000));
}
}
;
Map newPropertiesAmsSite=new HashMap(){
{
put("zookeeper.session.timeout.localHBaseCluster",String.valueOf(120000));
put("hbase.normalizer.enabled",String.valueOf(true));
put("hbase.normalizer.period",String.valueOf(600000));
put("hbase.master.normalizer.class","org.apache.hadoop.hbase.master.normalizer.SimpleRegionNormalizer");
}
}
;
EasyMockSupport easyMockSupport=new EasyMockSupport();
Clusters clusters=easyMockSupport.createNiceMock(Clusters.class);
final Cluster cluster=easyMockSupport.createNiceMock(Cluster.class);
Config mockAmsHbaseSite=easyMockSupport.createNiceMock(Config.class);
expect(clusters.getClusters()).andReturn(new HashMap(){
{
put("normal",cluster);
}
}
).once();
expect(cluster.getDesiredConfigByType("ams-hbase-site")).andReturn(mockAmsHbaseSite).atLeastOnce();
expect(mockAmsHbaseSite.getProperties()).andReturn(oldPropertiesAmsHbaseSite).atLeastOnce();
Injector injector=easyMockSupport.createNiceMock(Injector.class);
expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
replay(injector,clusters,mockAmsHbaseSite,cluster);
AmbariManagementControllerImpl controller=createMockBuilder(AmbariManagementControllerImpl.class).addMockedMethod("createConfiguration").addMockedMethod("getClusters",new Class[]{}).addMockedMethod("createConfig").withConstructor(createNiceMock(ActionManager.class),clusters,injector).createNiceMock();
Injector injector2=easyMockSupport.createNiceMock(Injector.class);
Capture propertiesCapture=EasyMock.newCapture();
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class),anyString(),capture(propertiesCapture),anyString(),anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
replay(controller,injector2);
new UpgradeCatalog220(injector2).updateAMSConfigs();
easyMockSupport.verifyAll();
Map updatedProperties=propertiesCapture.getValue();
assertTrue(Maps.difference(newPropertiesAmsSite,updatedProperties).areEqual());
}
InternalCallVerifier BooleanVerifier
@Test public void testAmsSiteUpdateConfigs() throws Exception {
Map oldPropertiesAmsSite=new HashMap(){
{
put("timeline.metrics.service.default.result.limit",String.valueOf(5760));
put("timeline.metrics.cluster.aggregator.minute.interval",String.valueOf(1000));
put("timeline.metrics.host.aggregator.minute.interval",String.valueOf(1000));
put("timeline.metrics.cluster.aggregator.minute.ttl",String.valueOf(1000));
}
}
;
Map newPropertiesAmsSite=new HashMap(){
{
put("timeline.metrics.service.default.result.limit",String.valueOf(15840));
put("timeline.metrics.cluster.aggregator.second.interval",String.valueOf(120));
put("timeline.metrics.cluster.aggregator.minute.interval",String.valueOf(300));
put("timeline.metrics.host.aggregator.minute.interval",String.valueOf(300));
put("timeline.metrics.cluster.aggregator.second.ttl",String.valueOf(2592000));
put("timeline.metrics.cluster.aggregator.minute.ttl",String.valueOf(7776000));
put("timeline.metrics.cluster.aggregator.second.checkpointCutOffMultiplier",String.valueOf(2));
put("timeline.metrics.cluster.aggregator.second.disabled",String.valueOf(false));
put("timeline.metrics.hbase.fifo.compaction.enabled",String.valueOf(true));
}
}
;
EasyMockSupport easyMockSupport=new EasyMockSupport();
Clusters clusters=easyMockSupport.createNiceMock(Clusters.class);
final Cluster cluster=easyMockSupport.createNiceMock(Cluster.class);
Config mockAmsSite=easyMockSupport.createNiceMock(Config.class);
expect(clusters.getClusters()).andReturn(new HashMap(){
{
put("normal",cluster);
}
}
).once();
expect(cluster.getDesiredConfigByType("ams-site")).andReturn(mockAmsSite).atLeastOnce();
expect(mockAmsSite.getProperties()).andReturn(oldPropertiesAmsSite).times(2);
Injector injector=easyMockSupport.createNiceMock(Injector.class);
expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
replay(injector,clusters,mockAmsSite,cluster);
AmbariManagementControllerImpl controller=createMockBuilder(AmbariManagementControllerImpl.class).addMockedMethod("createConfiguration").addMockedMethod("getClusters",new Class[]{}).addMockedMethod("createConfig").withConstructor(createNiceMock(ActionManager.class),clusters,injector).createNiceMock();
Injector injector2=easyMockSupport.createNiceMock(Injector.class);
Capture propertiesCapture=EasyMock.newCapture();
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class),anyString(),capture(propertiesCapture),anyString(),anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
replay(controller,injector2);
new UpgradeCatalog220(injector2).updateAMSConfigs();
easyMockSupport.verifyAll();
Map updatedProperties=propertiesCapture.getValue();
assertTrue(Maps.difference(newPropertiesAmsSite,updatedProperties).areEqual());
}
InternalCallVerifier EqualityVerifier
@Test public void testUpdateHiveEnvContent() throws Exception {
UpgradeCatalog220 upgradeCatalog220=new UpgradeCatalog220(injector);
String testContent="# The heap size of the jvm stared by hive shell script can be controlled via:\n" + "\n" + "if [ \"$SERVICE\" = \"metastore\" ]; then\n"+ " export HADOOP_HEAPSIZE=\"{{hive_metastore_heapsize}}\"\n"+ "else\n"+ " export HADOOP_HEAPSIZE=\"{{hive_heapsize}}\"\n"+ "fi\n"+ "\n"+ "export HADOOP_CLIENT_OPTS=\"-Xmx${HADOOP_HEAPSIZE}m $HADOOP_CLIENT_OPTS\"\n"+ "\n"+ "# Larger heap size may be required when running queries over large number of files or partitions.\n";
String expectedResult="# The heap size of the jvm stared by hive shell script can be controlled via:\n" + "\n" + "if [ \"$SERVICE\" = \"metastore\" ]; then\n"+ " export HADOOP_HEAPSIZE=\"{{hive_metastore_heapsize}}\"\n"+ "else\n"+ " export HADOOP_HEAPSIZE=\"{{hive_heapsize}}\"\n"+ "fi\n"+ "\n"+ "export HADOOP_CLIENT_OPTS=\"$HADOOP_CLIENT_OPTS -Xmx${HADOOP_HEAPSIZE}m\"\n"+ "\n"+ "# Larger heap size may be required when running queries over large number of files or partitions.\n";
Assert.assertEquals(expectedResult,upgradeCatalog220.updateHiveEnvContent(testContent));
testContent="# The heap size of the jvm stared by hive shell script can be controlled via:\n" + "export SERVICE=$SERVICE\n" + "if [ \"$SERVICE\" = \"metastore\" ]; then\n"+ " export HADOOP_HEAPSIZE=\"{{hive_metastore_heapsize}}\"\n"+ "else\n"+ " export HADOOP_HEAPSIZE=\"{{hive_heapsize}}\"\n"+ "fi\n"+ "\n"+ "# Larger heap size may be required when running queries over large number of files or partitions.\n";
expectedResult="# The heap size of the jvm stared by hive shell script can be controlled via:\n" + "export SERVICE=$SERVICE\n" + "if [ \"$SERVICE\" = \"metastore\" ]; then\n"+ " export HADOOP_HEAPSIZE=\"{{hive_metastore_heapsize}}\"\n"+ "else\n"+ " export HADOOP_HEAPSIZE={{hive_heapsize}} # Setting for HiveServer2 and Client\n"+ "fi\n"+ "\n"+ "export HADOOP_CLIENT_OPTS=\"$HADOOP_CLIENT_OPTS -Xmx${HADOOP_HEAPSIZE}m\"\n"+ "# Larger heap size may be required when running queries over large number of files or partitions.\n";
Assert.assertEquals(expectedResult,upgradeCatalog220.updateHiveEnvContent(testContent));
}
APIUtilityVerifier InternalCallVerifier NullVerifier
@Test public void testUpdateKerberosDescriptorArtifact() throws Exception {
final KerberosDescriptorFactory kerberosDescriptorFactory=new KerberosDescriptorFactory();
KerberosServiceDescriptor serviceDescriptor;
URL systemResourceURL=ClassLoader.getSystemResource("kerberos/test_kerberos_descriptor_2_1_3.json");
assertNotNull(systemResourceURL);
final KerberosDescriptor kerberosDescriptorOrig=kerberosDescriptorFactory.createInstance(new File(systemResourceURL.getFile()));
assertNotNull(kerberosDescriptorOrig);
serviceDescriptor=kerberosDescriptorOrig.getService("HDFS");
assertNotNull(serviceDescriptor);
assertNotNull(serviceDescriptor.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorOrig.getService("OOZIE");
assertNotNull(serviceDescriptor);
assertNotNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
UpgradeCatalog220 upgradeMock=createMockBuilder(UpgradeCatalog220.class).createMock();
Capture> updatedData=new Capture>();
ArtifactEntity artifactEntity=createNiceMock(ArtifactEntity.class);
expect(artifactEntity.getArtifactData()).andReturn(kerberosDescriptorOrig.toMap()).once();
artifactEntity.setArtifactData(capture(updatedData));
expectLastCall().once();
replay(artifactEntity,upgradeMock);
upgradeMock.updateKerberosDescriptorArtifact(createNiceMock(ArtifactDAO.class),artifactEntity);
verify(artifactEntity,upgradeMock);
KerberosDescriptor kerberosDescriptorUpdated=new KerberosDescriptorFactory().createInstance(updatedData.getValue());
assertNotNull(kerberosDescriptorUpdated);
serviceDescriptor=kerberosDescriptorUpdated.getService("HDFS");
assertNotNull(serviceDescriptor);
assertNull(serviceDescriptor.getIdentity("hdfs"));
KerberosComponentDescriptor namenodeComponent=serviceDescriptor.getComponent("NAMENODE");
assertNotNull(namenodeComponent.getIdentity("hdfs"));
serviceDescriptor=kerberosDescriptorUpdated.getService("OOZIE");
assertNotNull(serviceDescriptor);
assertNull(serviceDescriptor.getIdentity("/HDFS/hdfs"));
assertNotNull(serviceDescriptor.getIdentity("/HDFS/NAMENODE/hdfs"));
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog221Test InternalCallVerifier EqualityVerifier
@Test public void test_AddCheckCommandTimeoutParam_ParamsNotAvailable(){
UpgradeCatalog221 upgradeCatalog221=new UpgradeCatalog221(injector);
String inputSource="{ \"path\" : \"test_path\", \"type\" : \"SCRIPT\"}";
String expectedSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"name\":\"check.command.timeout\",\"display_name\":\"Check command timeout\",\"value\":60.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before check command will be killed by timeout\",\"units\":\"seconds\"}]}";
String result=upgradeCatalog221.addCheckCommandTimeoutParam(inputSource);
Assert.assertEquals(result,expectedSource);
}
InternalCallVerifier EqualityVerifier
@Test public void test_AddCheckCommandTimeoutParam_ParamsAvailable(){
UpgradeCatalog221 upgradeCatalog221=new UpgradeCatalog221(injector);
String inputSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"name\":\"test\",\"display_name\":\"Test\",\"value\":10.0,\"type\":\"test\",\"description\":\"test\",\"units\":\"test\"}]}";
String expectedSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"name\":\"test\",\"display_name\":\"Test\",\"value\":10.0,\"type\":\"test\",\"description\":\"test\",\"units\":\"test\"},{\"name\":\"check.command.timeout\",\"display_name\":\"Check command timeout\",\"value\":60.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before check command will be killed by timeout\",\"units\":\"seconds\"}]}";
String result=upgradeCatalog221.addCheckCommandTimeoutParam(inputSource);
Assert.assertEquals(result,expectedSource);
}
InternalCallVerifier EqualityVerifier
@Test public void test_AddCheckCommandTimeoutParam_NeededParamAlreadyAdded(){
UpgradeCatalog221 upgradeCatalog221=new UpgradeCatalog221(injector);
String inputSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"display_name\":\"Test\",\"value\":10.0,\"type\":\"test\",\"description\":\"test\",\"units\":\"test\"},{\"name\":\"check.command.timeout\",\"display_name\":\"Check command timeout\",\"value\":60.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before check command will be killed by timeout\",\"units\":\"seconds\"}]}";
String expectedSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"display_name\":\"Test\",\"value\":10.0,\"type\":\"test\",\"description\":\"test\",\"units\":\"test\"},{\"name\":\"check.command.timeout\",\"display_name\":\"Check command timeout\",\"value\":60.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before check command will be killed by timeout\",\"units\":\"seconds\"}]}";
String result=upgradeCatalog221.addCheckCommandTimeoutParam(inputSource);
Assert.assertEquals(result,expectedSource);
}
InternalCallVerifier BooleanVerifier
@Test public void testUpdateAmsHbaseSecuritySiteConfigs() throws Exception {
Map oldPropertiesAmsHbaseSecuritySite=new HashMap(){
{
put("zookeeper.znode.parent","/ams-hbase-secure");
}
}
;
Map newPropertiesAmsHbaseSecuritySite=new HashMap(){
{
}
}
;
EasyMockSupport easyMockSupport=new EasyMockSupport();
Clusters clusters=easyMockSupport.createNiceMock(Clusters.class);
final Cluster cluster=easyMockSupport.createNiceMock(Cluster.class);
Config mockAmsHbaseSecuritySite=easyMockSupport.createNiceMock(Config.class);
expect(clusters.getClusters()).andReturn(new HashMap(){
{
put("normal",cluster);
}
}
).once();
expect(cluster.getDesiredConfigByType("ams-hbase-security-site")).andReturn(mockAmsHbaseSecuritySite).atLeastOnce();
expect(mockAmsHbaseSecuritySite.getProperties()).andReturn(oldPropertiesAmsHbaseSecuritySite).times(2);
Injector injector=easyMockSupport.createNiceMock(Injector.class);
expect(injector.getInstance(Gson.class)).andReturn(null).anyTimes();
expect(injector.getInstance(MaintenanceStateHelper.class)).andReturn(null).anyTimes();
expect(injector.getInstance(KerberosHelper.class)).andReturn(createNiceMock(KerberosHelper.class)).anyTimes();
replay(injector,clusters,mockAmsHbaseSecuritySite,cluster);
AmbariManagementControllerImpl controller=createMockBuilder(AmbariManagementControllerImpl.class).addMockedMethod("createConfiguration").addMockedMethod("getClusters",new Class[]{}).addMockedMethod("createConfig").withConstructor(createNiceMock(ActionManager.class),clusters,injector).createNiceMock();
Injector injector2=easyMockSupport.createNiceMock(Injector.class);
Capture propertiesCapture=EasyMock.newCapture();
expect(injector2.getInstance(AmbariManagementController.class)).andReturn(controller).anyTimes();
expect(controller.getClusters()).andReturn(clusters).anyTimes();
expect(controller.createConfig(anyObject(Cluster.class),anyString(),capture(propertiesCapture),anyString(),anyObject(Map.class))).andReturn(createNiceMock(Config.class)).once();
replay(controller,injector2);
new UpgradeCatalog221(injector2).updateAMSConfigs();
easyMockSupport.verifyAll();
Map updatedProperties=propertiesCapture.getValue();
assertTrue(Maps.difference(newPropertiesAmsHbaseSecuritySite,updatedProperties).areEqual());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testExecuteDDLUpdates() throws Exception {
final DBAccessor dbAccessor=createNiceMock(DBAccessor.class);
dbAccessor.createIndex(eq("idx_stage_request_id"),eq("stage"),eq("request_id"));
expectLastCall().once();
dbAccessor.createIndex(eq("idx_hrc_request_id"),eq("host_role_command"),eq("request_id"));
expectLastCall().once();
dbAccessor.createIndex(eq("idx_rsc_request_id"),eq("role_success_criteria"),eq("request_id"));
expectLastCall().once();
Capture capturedHostGroupComponentProvisionColumn=EasyMock.newCapture();
dbAccessor.addColumn(eq("hostgroup_component"),capture(capturedHostGroupComponentProvisionColumn));
expectLastCall().once();
replay(dbAccessor);
Module module=new Module(){
@Override public void configure( Binder binder){
binder.bind(DBAccessor.class).toInstance(dbAccessor);
binder.bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
binder.bind(EntityManager.class).toInstance(entityManager);
}
}
;
Injector injector=Guice.createInjector(module);
UpgradeCatalog221 upgradeCatalog221=injector.getInstance(UpgradeCatalog221.class);
upgradeCatalog221.executeDDLUpdates();
assertEquals("Incorrect column name added","provision_action",capturedHostGroupComponentProvisionColumn.getValue().getName());
assertNull("Incorrect default value added",capturedHostGroupComponentProvisionColumn.getValue().getDefaultValue());
assertEquals("Incorrect column type added",String.class,capturedHostGroupComponentProvisionColumn.getValue().getType());
assertEquals("Incorrect column length added",255,capturedHostGroupComponentProvisionColumn.getValue().getLength().intValue());
assertTrue("Incorrect column nullable state added",capturedHostGroupComponentProvisionColumn.getValue().isNullable());
verify(dbAccessor);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog230Test InternalCallVerifier EqualityVerifier
@Test public void testGetTargetVersion() throws Exception {
UpgradeCatalog upgradeCatalog=injector.getInstance(UpgradeCatalog230.class);
Assert.assertEquals("2.3.0",upgradeCatalog.getTargetVersion());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testExecuteDDLUpdates() throws Exception {
final DBAccessor dbAccessor=injector.getInstance(DBAccessor.class);
Configuration configuration=createNiceMock(Configuration.class);
expect(configuration.getDatabaseUrl()).andReturn(Configuration.JDBC_IN_MEMORY_URL).anyTimes();
Capture columnCapture=EasyMock.newCapture();
Capture columnCapturePermissionLabel=EasyMock.newCapture();
Capture> columnsCaptureRoleAuthorization=EasyMock.newCapture();
Capture> columnsCapturePermissionRoleAuthorization=EasyMock.newCapture();
dbAccessor.alterColumn(eq("host_role_command"),capture(columnCapture));
expectLastCall();
dbAccessor.addColumn(eq("adminpermission"),capture(columnCapturePermissionLabel));
expectLastCall();
dbAccessor.createTable(eq("roleauthorization"),capture(columnsCaptureRoleAuthorization),eq("authorization_id"));
expectLastCall();
dbAccessor.createTable(eq("permission_roleauthorization"),capture(columnsCapturePermissionRoleAuthorization),eq("permission_id"),eq("authorization_id"));
expectLastCall();
dbAccessor.addFKConstraint("permission_roleauthorization","FK_permission_roleauth_pid","permission_id","adminpermission","permission_id",false);
expectLastCall();
dbAccessor.addFKConstraint("permission_roleauthorization","FK_permission_roleauth_aid","authorization_id","roleauthorization","authorization_id",false);
expectLastCall();
replayAll();
AbstractUpgradeCatalog upgradeCatalog=injector.getInstance(UpgradeCatalog230.class);
Class> c=AbstractUpgradeCatalog.class;
Field f=c.getDeclaredField("configuration");
f.setAccessible(true);
f.set(upgradeCatalog,configuration);
upgradeCatalog.executeDDLUpdates();
verifyAll();
assertTrue(columnCapture.getValue().isNullable());
assertEquals(columnCapturePermissionLabel.getValue().getName(),"permission_label");
assertEquals(columnCapturePermissionLabel.getValue().getType(),String.class);
assertEquals(columnCapturePermissionLabel.getValue().getLength(),Integer.valueOf(255));
assertEquals(columnCapturePermissionLabel.getValue().isNullable(),true);
List columnInfos;
DBAccessor.DBColumnInfo columnInfo;
columnInfos=columnsCaptureRoleAuthorization.getValue();
assertEquals(2,columnInfos.size());
columnInfo=columnInfos.get(0);
assertEquals("authorization_id",columnInfo.getName());
assertEquals(String.class,columnInfo.getType());
assertEquals(Integer.valueOf(100),columnInfo.getLength());
columnInfo=columnInfos.get(1);
assertEquals("authorization_name",columnInfo.getName());
assertEquals(String.class,columnInfo.getType());
assertEquals(Integer.valueOf(255),columnInfo.getLength());
columnInfos=columnsCapturePermissionRoleAuthorization.getValue();
assertEquals(2,columnInfos.size());
columnInfo=columnInfos.get(0);
assertEquals("permission_id",columnInfo.getName());
assertEquals(Long.class,columnInfo.getType());
assertEquals(null,columnInfo.getLength());
columnInfo=columnInfos.get(1);
assertEquals("authorization_id",columnInfo.getName());
assertEquals(String.class,columnInfo.getType());
assertEquals(Integer.valueOf(100),columnInfo.getLength());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetSourceVersion(){
UpgradeCatalog upgradeCatalog=injector.getInstance(UpgradeCatalog230.class);
Assert.assertEquals("2.2.1",upgradeCatalog.getSourceVersion());
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalog240Test InternalCallVerifier EqualityVerifier
@Test public void test_addParam_ParamsNotAvailable(){
UpgradeCatalog240 upgradeCatalog240=new UpgradeCatalog240(injector);
String inputSource="{ \"path\" : \"test_path\", \"type\" : \"SCRIPT\"}";
List params=Arrays.asList("connection.timeout","checkpoint.time.warning.threshold","checkpoint.time.critical.threshold");
String expectedSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"name\":\"connection.timeout\",\"display_name\":\"Connection Timeout\",\"value\":5.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before this alert is considered to be CRITICAL\",\"units\":\"seconds\",\"threshold\":\"CRITICAL\"},{\"name\":\"checkpoint.time.warning.threshold\",\"display_name\":\"Checkpoint Warning\",\"value\":2.0,\"type\":\"PERCENT\",\"description\":\"The percentage of the last checkpoint time greater than the interval in order to trigger a warning alert.\",\"units\":\"%\",\"threshold\":\"WARNING\"},{\"name\":\"checkpoint.time.critical.threshold\",\"display_name\":\"Checkpoint Critical\",\"value\":2.0,\"type\":\"PERCENT\",\"description\":\"The percentage of the last checkpoint time greater than the interval in order to trigger a critical alert.\",\"units\":\"%\",\"threshold\":\"CRITICAL\"}]}";
String result=upgradeCatalog240.addParam(inputSource,params);
Assert.assertEquals(result,expectedSource);
}
InternalCallVerifier EqualityVerifier
@Test public void test_addParam_ParamsAvailableWithOneOFNeededItem(){
UpgradeCatalog240 upgradeCatalog240=new UpgradeCatalog240(injector);
String inputSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"name\":\"connection.timeout\",\"display_name\":\"Connection Timeout\",\"value\":5.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before this alert is considered to be CRITICAL\",\"units\":\"seconds\",\"threshold\":\"CRITICAL\"}]}";
List params=new ArrayList(Arrays.asList("connection.timeout","checkpoint.time.warning.threshold","checkpoint.time.critical.threshold"));
String expectedSource="{\"path\":\"test_path\",\"type\":\"SCRIPT\",\"parameters\":[{\"name\":\"connection.timeout\",\"display_name\":\"Connection Timeout\",\"value\":5.0,\"type\":\"NUMERIC\",\"description\":\"The maximum time before this alert is considered to be CRITICAL\",\"units\":\"seconds\",\"threshold\":\"CRITICAL\"},{\"name\":\"checkpoint.time.warning.threshold\",\"display_name\":\"Checkpoint Warning\",\"value\":2.0,\"type\":\"PERCENT\",\"description\":\"The percentage of the last checkpoint time greater than the interval in order to trigger a warning alert.\",\"units\":\"%\",\"threshold\":\"WARNING\"},{\"name\":\"checkpoint.time.critical.threshold\",\"display_name\":\"Checkpoint Critical\",\"value\":2.0,\"type\":\"PERCENT\",\"description\":\"The percentage of the last checkpoint time greater than the interval in order to trigger a critical alert.\",\"units\":\"%\",\"threshold\":\"CRITICAL\"}]}";
String result=upgradeCatalog240.addParam(inputSource,params);
Assert.assertEquals(result,expectedSource);
}
Class: org.apache.ambari.server.upgrade.UpgradeCatalogTest InternalCallVerifier BooleanVerifier IdentityVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpdateConfigurationProperties() throws Exception {
AmbariManagementController controller=injector.getInstance(AmbariManagementController.class);
ClusterRequest r=new ClusterRequest(null,"c1","HDP-0.1",null);
controller.createCluster(r);
Clusters clusters=injector.getInstance(Clusters.class);
Cluster cluster=clusters.getCluster("c1");
Assert.assertNotNull(cluster);
Map properties=new HashMap(){
{
put("a","b");
}
}
;
final ClusterRequest cl=new ClusterRequest(cluster.getClusterId(),cluster.getClusterName(),cluster.getDesiredStackVersion().getStackVersion(),null);
ConfigurationRequest cr=new ConfigurationRequest();
cr.setClusterName(cluster.getClusterName());
cr.setType("global");
cr.setVersionTag("version1");
cr.setProperties(properties);
cl.setDesiredConfig(Collections.singletonList(cr));
controller.updateClusters(new HashSet(){
{
add(cl);
}
}
,null);
Config config=cluster.getConfig("global","version1");
Assert.assertNotNull(config);
Assert.assertEquals(properties,config.getProperties());
UpgradeCatalog149 testCatalog=injector.getInstance(UpgradeCatalog149.class);
testCatalog.updateConfigurationProperties("global",Collections.singletonMap("x","y"),false,false);
config=cluster.getDesiredConfigByType("global");
String version=config.getTag();
Assert.assertNotNull(config);
Assert.assertNotSame("version1",version);
Assert.assertTrue(config.getProperties().containsKey("x"));
Assert.assertEquals("y",config.getProperties().get("x"));
testCatalog.updateConfigurationProperties("global",Collections.singletonMap("x","z"),true,false);
config=cluster.getDesiredConfigByType("global");
Assert.assertNotNull(config);
Assert.assertNotSame(version,config.getTag());
Assert.assertTrue(config.getProperties().containsKey("x"));
Assert.assertEquals("z",config.getProperties().get("x"));
version=config.getTag();
testCatalog.updateConfigurationProperties("global",Collections.singletonMap("x","y"),false,false);
config=cluster.getDesiredConfigByType("global");
Assert.assertNotNull(config);
Assert.assertSame(version,config.getTag());
Assert.assertTrue(config.getProperties().containsKey("x"));
Assert.assertEquals("z",config.getProperties().get("x"));
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testUpgradePath() throws Exception {
SchemaUpgradeHelper schemaUpgradeHelper=injector.getInstance(SchemaUpgradeHelper.class);
Set upgradeCatalogSet=schemaUpgradeHelper.getAllUpgradeCatalogs();
Assert.assertNotNull(upgradeCatalogSet);
Assert.assertEquals(5,upgradeCatalogSet.size());
List upgradeCatalogs=schemaUpgradeHelper.getUpgradePath(null,"1.5.1");
Assert.assertNotNull(upgradeCatalogs);
Assert.assertEquals(2,upgradeCatalogs.size());
Assert.assertEquals("1.4.9",upgradeCatalogs.get(0).getTargetVersion());
Assert.assertEquals("1.5.0",upgradeCatalogs.get(1).getTargetVersion());
}
Class: org.apache.ambari.server.utils.StageUtilsTest InternalCallVerifier EqualityVerifier
@Test public void testGetATestStage(){
StageUtils stageUtils=new StageUtils(injector.getInstance(StageFactory.class));
Stage s=StageUtils.getATestStage(1,2,"host2","","hostParamsStage");
String hostname=s.getHosts().get(0);
List wrappers=s.getExecutionCommands(hostname);
for ( ExecutionCommandWrapper wrapper : wrappers) {
assertEquals("cluster1",wrapper.getExecutionCommand().getClusterName());
assertEquals(StageUtils.getActionId(1,2),wrapper.getExecutionCommand().getCommandId());
assertEquals(hostname,wrapper.getExecutionCommand().getHostname());
}
}
InternalCallVerifier EqualityVerifier
@Test public void testJaxbToString() throws Exception {
StageUtils stageUtils=new StageUtils(injector.getInstance(StageFactory.class));
Stage s=StageUtils.getATestStage(1,2,"host1","","hostParamsStage");
String hostname=s.getHosts().get(0);
List wrappers=s.getExecutionCommands(hostname);
for ( ExecutionCommandWrapper wrapper : wrappers) {
}
assertEquals(StageUtils.getActionId(1,2),s.getActionId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testJasonToExecutionCommand() throws JsonGenerationException, JsonMappingException, JAXBException, IOException {
StageUtils stageUtils=new StageUtils(injector.getInstance(StageFactory.class));
Stage s=StageUtils.getATestStage(1,2,"host1","clusterHostInfo","hostParamsStage");
ExecutionCommand cmd=s.getExecutionCommands(getHostName()).get(0).getExecutionCommand();
HashMap> configTags=new HashMap>();
Map globalTag=new HashMap();
globalTag.put("tag","version1");
configTags.put("global",globalTag);
cmd.setConfigurationTags(configTags);
String json=StageUtils.jaxbToString(cmd);
InputStream is=new ByteArrayInputStream(json.getBytes(Charset.forName("UTF8")));
ExecutionCommand cmdDes=new Gson().fromJson(new InputStreamReader(is),ExecutionCommand.class);
assertEquals(cmd.toString(),cmdDes.toString());
assertEquals(cmd,cmdDes);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetClusterHostInfo() throws Exception {
final HashMap hostAttributes=new HashMap(){
{
put("os_family","redhat");
put("os_release_version","5.9");
}
}
;
final Clusters clusters=createNiceMock(Clusters.class);
List hosts=new ArrayList();
List hostNames=new ArrayList();
List pingPorts=Arrays.asList(StageUtils.DEFAULT_PING_PORT,StageUtils.DEFAULT_PING_PORT,StageUtils.DEFAULT_PING_PORT,8671,8671,null,8672,8672,null,8673);
for (int i=0; i < 10; i++) {
String hostname=String.format("h%d",i);
Host host=createNiceMock(Host.class);
expect(host.getHostName()).andReturn(hostname).anyTimes();
expect(host.getHostAttributes()).andReturn(hostAttributes).anyTimes();
expect(host.getCurrentPingPort()).andReturn(pingPorts.get(i)).anyTimes();
hosts.add(host);
hostNames.add(hostname);
expect(clusters.getHost(hostname)).andReturn(host).anyTimes();
}
final ServiceComponentHost nnh0ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(nnh0ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost snnh1ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(snnh1ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh0ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh0ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh1ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh1ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh2ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh2ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh3ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh3ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh5ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh5ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh7ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh7ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh8ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh8ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost dnh9ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(dnh9ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost hbm5ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(hbm5ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost hbrs1ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(hbrs1ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost hbrs3ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(hbrs3ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost hbrs5ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(hbrs5ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost hbrs8ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(hbrs8ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost hbrs9ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(hbrs9ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost mrjt5ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrjt5ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost mrtt1ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt1ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost mrtt2ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt2ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.DECOMMISSIONED).anyTimes();
final ServiceComponentHost mrtt3ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt3ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.DECOMMISSIONED).anyTimes();
final ServiceComponentHost mrtt4ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt4ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost mrtt5ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt5ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost mrtt7ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt7ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost mrtt9ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(mrtt9ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
final ServiceComponentHost nns7ServiceComponentHost=createMock(ServiceComponentHost.class);
expect(nns7ServiceComponentHost.getComponentAdminState()).andReturn(HostComponentAdminState.INSERVICE).anyTimes();
Map> projectedTopology=new HashMap>();
final HashMap nnServiceComponentHosts=new HashMap(){
{
put("h0",nnh0ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"NAMENODE",nnServiceComponentHosts.keySet());
final HashMap snnServiceComponentHosts=new HashMap(){
{
put("h1",snnh1ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"SECONDARY_NAMENODE",snnServiceComponentHosts.keySet());
final Map dnServiceComponentHosts=new HashMap(){
{
put("h0",dnh0ServiceComponentHost);
put("h1",dnh1ServiceComponentHost);
put("h2",dnh2ServiceComponentHost);
put("h3",dnh3ServiceComponentHost);
put("h5",dnh5ServiceComponentHost);
put("h7",dnh7ServiceComponentHost);
put("h8",dnh8ServiceComponentHost);
put("h9",dnh9ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"DATANODE",dnServiceComponentHosts.keySet());
final Map hbmServiceComponentHosts=new HashMap(){
{
put("h5",hbm5ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"HBASE_MASTER",hbmServiceComponentHosts.keySet());
final Map hbrsServiceComponentHosts=new HashMap(){
{
put("h1",hbrs1ServiceComponentHost);
put("h3",hbrs3ServiceComponentHost);
put("h5",hbrs5ServiceComponentHost);
put("h8",hbrs8ServiceComponentHost);
put("h9",hbrs9ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"HBASE_REGIONSERVER",hbrsServiceComponentHosts.keySet());
final Map mrjtServiceComponentHosts=new HashMap(){
{
put("h5",mrjt5ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"JOBTRACKER",mrjtServiceComponentHosts.keySet());
final Map mrttServiceComponentHosts=new HashMap(){
{
put("h1",mrtt1ServiceComponentHost);
put("h2",mrtt2ServiceComponentHost);
put("h3",mrtt3ServiceComponentHost);
put("h4",mrtt4ServiceComponentHost);
put("h5",mrtt5ServiceComponentHost);
put("h7",mrtt7ServiceComponentHost);
put("h9",mrtt9ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"TASKTRACKER",mrttServiceComponentHosts.keySet());
final Map nnsServiceComponentHosts=new HashMap(){
{
put("h7",nns7ServiceComponentHost);
}
}
;
insertTopology(projectedTopology,"NONAME_SERVER",nnsServiceComponentHosts.keySet());
final ServiceComponent nnComponent=createMock(ServiceComponent.class);
expect(nnComponent.getName()).andReturn("NAMENODE").anyTimes();
expect(nnComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return nnServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(nnComponent.getServiceComponentHosts()).andReturn(nnServiceComponentHosts).anyTimes();
expect(nnComponent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent snnComponent=createMock(ServiceComponent.class);
expect(snnComponent.getName()).andReturn("SECONDARY_NAMENODE").anyTimes();
expect(snnComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return snnServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(snnComponent.getServiceComponentHosts()).andReturn(snnServiceComponentHosts).anyTimes();
expect(snnComponent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent dnComponent=createMock(ServiceComponent.class);
expect(dnComponent.getName()).andReturn("DATANODE").anyTimes();
expect(dnComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return dnServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(dnComponent.getServiceComponentHosts()).andReturn(dnServiceComponentHosts).anyTimes();
expect(dnComponent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent hbmComponent=createMock(ServiceComponent.class);
expect(hbmComponent.getName()).andReturn("HBASE_MASTER").anyTimes();
expect(hbmComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return hbmServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(hbmComponent.getServiceComponentHosts()).andReturn(hbmServiceComponentHosts).anyTimes();
expect(hbmComponent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent hbrsComponent=createMock(ServiceComponent.class);
expect(hbrsComponent.getName()).andReturn("HBASE_REGIONSERVER").anyTimes();
expect(hbrsComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return hbrsServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
Map hbrsHosts=Maps.filterKeys(hbrsServiceComponentHosts,new Predicate(){
@Override public boolean apply( String s){
return s.equals("h1");
}
}
);
expect(hbrsComponent.getServiceComponentHosts()).andReturn(hbrsServiceComponentHosts).anyTimes();
expect(hbrsComponent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent mrjtComponent=createMock(ServiceComponent.class);
expect(mrjtComponent.getName()).andReturn("JOBTRACKER").anyTimes();
expect(mrjtComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return mrjtServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(mrjtComponent.getServiceComponentHosts()).andReturn(mrjtServiceComponentHosts).anyTimes();
expect(mrjtComponent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent mrttCompomnent=createMock(ServiceComponent.class);
expect(mrttCompomnent.getName()).andReturn("TASKTRACKER").anyTimes();
expect(mrttCompomnent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return mrttServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(mrttCompomnent.getServiceComponentHosts()).andReturn(mrttServiceComponentHosts).anyTimes();
expect(mrttCompomnent.isClientComponent()).andReturn(false).anyTimes();
final ServiceComponent nnsComponent=createMock(ServiceComponent.class);
expect(nnsComponent.getName()).andReturn("NONAME_SERVER").anyTimes();
expect(nnsComponent.getServiceComponentHost(anyObject(String.class))).andAnswer(new IAnswer(){
@Override public ServiceComponentHost answer() throws Throwable {
Object[] args=getCurrentArguments();
return nnsServiceComponentHosts.get((String)args[0]);
}
}
).anyTimes();
expect(nnsComponent.getServiceComponentHosts()).andReturn(nnsServiceComponentHosts).anyTimes();
expect(nnsComponent.isClientComponent()).andReturn(false).anyTimes();
final Service hdfsService=createMock(Service.class);
expect(hdfsService.getServiceComponents()).andReturn(new HashMap(){
{
put("NAMENODE",nnComponent);
put("SECONDARY_NAMENODE",snnComponent);
put("DATANODE",dnComponent);
}
}
).anyTimes();
final Service hbaseService=createMock(Service.class);
expect(hbaseService.getServiceComponents()).andReturn(new HashMap(){
{
put("HBASE_MASTER",hbmComponent);
put("HBASE_REGIONSERVER",hbrsComponent);
}
}
).anyTimes();
final Service mrService=createMock(Service.class);
expect(mrService.getServiceComponents()).andReturn(new HashMap(){
{
put("JOBTRACKER",mrjtComponent);
put("TASKTRACKER",mrttCompomnent);
}
}
).anyTimes();
final Service nnService=createMock(Service.class);
expect(nnService.getServiceComponents()).andReturn(new HashMap(){
{
put("NONAME_SERVER",nnsComponent);
}
}
).anyTimes();
Cluster cluster=createMock(Cluster.class);
expect(cluster.getHosts()).andReturn(hosts).anyTimes();
expect(cluster.getServices()).andReturn(new HashMap(){
{
put("HDFS",hdfsService);
put("HBASE",hbaseService);
put("MAPREDUCE",mrService);
put("NONAME",nnService);
}
}
).anyTimes();
final TopologyManager topologyManager=injector.getInstance(TopologyManager.class);
topologyManager.getPendingHostComponents();
expectLastCall().andReturn(projectedTopology).once();
replayAll();
injector.getInstance(AmbariMetaInfo.class).init();
Map> info=StageUtils.getClusterHostInfo(cluster);
verifyAll();
Set allHosts=info.get(StageUtils.HOSTS_LIST);
assertEquals(hosts.size(),allHosts.size());
for ( Host host : hosts) {
assertTrue(allHosts.contains(host.getHostName()));
}
checkServiceHostIndexes(info,"DATANODE","slave_hosts",projectedTopology,hostNames);
checkServiceHostIndexes(info,"NAMENODE","namenode_host",projectedTopology,hostNames);
checkServiceHostIndexes(info,"SECONDARY_NAMENODE","snamenode_host",projectedTopology,hostNames);
checkServiceHostIndexes(info,"HBASE_MASTER","hbase_master_hosts",projectedTopology,hostNames);
checkServiceHostIndexes(info,"HBASE_REGIONSERVER","hbase_rs_hosts",projectedTopology,hostNames);
checkServiceHostIndexes(info,"JOBTRACKER","jtnode_host",projectedTopology,hostNames);
checkServiceHostIndexes(info,"TASKTRACKER","mapred_tt_hosts",projectedTopology,hostNames);
checkServiceHostIndexes(info,"NONAME_SERVER","noname_server_hosts",projectedTopology,hostNames);
Set actualPingPorts=info.get(StageUtils.PORTS);
if (pingPorts.contains(null)) {
assertEquals(new HashSet(pingPorts).size(),actualPingPorts.size() + 1);
}
else {
assertEquals(new HashSet(pingPorts).size(),actualPingPorts.size());
}
List pingPortsActual=getRangeMappedDecompressedSet(actualPingPorts);
List reindexedPorts=getReindexedList(pingPortsActual,new ArrayList(allHosts),hostNames);
List expectedPingPorts=new ArrayList(pingPorts);
for (int i=0; i < expectedPingPorts.size(); i++) {
if (expectedPingPorts.get(i) == null) {
expectedPingPorts.set(i,StageUtils.DEFAULT_PING_PORT);
}
}
assertEquals(expectedPingPorts,reindexedPorts);
assertTrue(info.containsKey("decom_tt_hosts"));
Set decommissionedHosts=info.get("decom_tt_hosts");
assertEquals(2,decommissionedHosts.toString().split(",").length);
assertTrue(info.containsKey(StageUtils.AMBARI_SERVER_HOST));
Set serverHost=info.get(StageUtils.AMBARI_SERVER_HOST);
assertEquals(1,serverHost.size());
assertEquals(StageUtils.getHostName(),serverHost.iterator().next());
assertTrue(getDecompressedSet(info.get("hbase_rs_hosts")).contains(9));
info=StageUtils.substituteHostIndexes(info);
checkServiceHostNames(info,"DATANODE","slave_hosts",projectedTopology);
checkServiceHostNames(info,"NAMENODE","namenode_host",projectedTopology);
checkServiceHostNames(info,"SECONDARY_NAMENODE","snamenode_host",projectedTopology);
checkServiceHostNames(info,"HBASE_MASTER","hbase_master_hosts",projectedTopology);
checkServiceHostNames(info,"HBASE_REGIONSERVER","hbase_rs_hosts",projectedTopology);
checkServiceHostNames(info,"JOBTRACKER","jtnode_host",projectedTopology);
checkServiceHostNames(info,"TASKTRACKER","mapred_tt_hosts",projectedTopology);
checkServiceHostNames(info,"NONAME_SERVER","noname_server_hosts",projectedTopology);
}
Class: org.apache.ambari.server.utils.TestParallel APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests {@link org.apache.ambari.server.utils.Parallel} forLoop iteration exceptions
* @throws Exception
*/
@Test public void testParallelForLoopIterationExceptions() throws Exception {
final List input=new LinkedList();
for (int i=0; i < 10; i++) {
input.add(i);
}
final List failForList=Arrays.asList(new Integer[]{2,5,7});
ParallelLoopResult loopResult=Parallel.forLoop(input,new LoopBody(){
@Override public Integer run( Integer in1){
if (failForList.contains(in1)) {
throw new RuntimeException("Ignore this exception");
}
return in1 * in1;
}
}
);
Assert.assertFalse(loopResult.getIsCompleted());
Assert.assertNotNull(loopResult.getResult());
List output=loopResult.getResult();
Assert.assertEquals(input.size(),output.size());
for (int i=0; i < input.size(); i++) {
if (failForList.contains(i)) {
Assert.assertNull(output.get(i));
output.set(i,i * i);
}
else {
Assert.assertEquals(i * i,(int)output.get(i));
}
}
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests nested {@link org.apache.ambari.server.utils.Parallel} forLoop
* @throws Exception
*/
@Test public void testNestedParallelForLoop() throws Exception {
final List input=new LinkedList();
for (int i=0; i < 10; i++) {
input.add(i);
}
final ParallelLoopResult[] innerLoopResults=new ParallelLoopResult[input.size()];
ParallelLoopResult loopResult=Parallel.forLoop(input,new LoopBody(){
@Override public Integer run( final Integer in1){
int sq=in1 * in1;
ParallelLoopResult innerLoopResult=Parallel.forLoop(input,new LoopBody(){
@Override public Integer run( Integer in2){
return in1 * in2;
}
}
);
innerLoopResults[in1]=innerLoopResult;
return in1 * in1;
}
}
);
Assert.assertNotNull(loopResult);
Assert.assertTrue(loopResult.getIsCompleted());
List output=loopResult.getResult();
Assert.assertNotNull(output);
Assert.assertEquals(input.size(),output.size());
for (int i=0; i < input.size(); i++) {
Assert.assertEquals(i * i,(int)output.get(i));
ParallelLoopResult innerLoopResult=innerLoopResults[i];
Assert.assertNotNull(innerLoopResult);
Assert.assertTrue(innerLoopResult.getIsCompleted());
List innerOutput=innerLoopResult.getResult();
Assert.assertNotNull(innerOutput);
Assert.assertEquals(input.size(),innerOutput.size());
for (int j=0; j < input.size(); j++) {
Assert.assertEquals(i * j,(int)innerOutput.get(j));
}
}
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests {@link org.apache.ambari.server.utils.Parallel} forLoop base cases.
* @throws Exception
*/
@Test public void testParallelForLoopBaseCases() throws Exception {
ParallelLoopResult nullLoopResult=Parallel.forLoop(null,new LoopBody(){
@Override public Integer run( Integer integer){
return integer;
}
}
);
Assert.assertTrue(nullLoopResult.getIsCompleted());
Assert.assertTrue(nullLoopResult.getResult().isEmpty());
ParallelLoopResult emptyLoopResult=Parallel.forLoop(new ArrayList(),new LoopBody(){
@Override public Integer run( Integer integer){
return integer;
}
}
);
Assert.assertTrue(emptyLoopResult.getIsCompleted());
Assert.assertTrue(emptyLoopResult.getResult().isEmpty());
ParallelLoopResult singleElementLoopResult=Parallel.forLoop(Collections.singletonList(7),new LoopBody(){
@Override public Integer run( Integer integer){
return integer;
}
}
);
Assert.assertTrue(singleElementLoopResult.getIsCompleted());
List singleElementList=singleElementLoopResult.getResult();
Assert.assertTrue(singleElementLoopResult.getIsCompleted());
Assert.assertFalse(singleElementList.isEmpty());
Assert.assertEquals(1,singleElementList.size());
Assert.assertNotNull(singleElementList.get(0));
}
APIUtilityVerifier IterativeVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests Parallel.forLoop
* @throws Exception
*/
@Test public void testParallelForLoop() throws Exception {
final List input=new LinkedList();
for (int i=0; i < 10; i++) {
input.add(i);
}
ParallelLoopResult loopResult=Parallel.forLoop(input,new LoopBody(){
@Override public Integer run( Integer in1){
return in1 * in1;
}
}
);
Assert.assertTrue(loopResult.getIsCompleted());
Assert.assertNotNull(loopResult.getResult());
List output=loopResult.getResult();
Assert.assertEquals(input.size(),output.size());
for (int i=0; i < input.size(); i++) {
Assert.assertEquals(i * i,(int)output.get(i));
}
}
APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
/**
* Tests {@link org.apache.ambari.server.utils.Parallel} forLoop iteration failures
* @throws Exception
*/
@Test public void testParallelForLoopIterationFailures() throws Exception {
final List input=new LinkedList();
for (int i=0; i < 10; i++) {
input.add(i);
}
final List failForList=Arrays.asList(new Integer[]{2,5,7});
ParallelLoopResult loopResult=Parallel.forLoop(input,new LoopBody(){
@Override public Integer run( Integer in1){
if (failForList.contains(in1)) {
return null;
}
return in1 * in1;
}
}
);
Assert.assertFalse(loopResult.getIsCompleted());
Assert.assertNotNull(loopResult.getResult());
List output=loopResult.getResult();
Assert.assertEquals(input.size(),output.size());
for (int i=0; i < input.size(); i++) {
if (failForList.contains(i)) {
Assert.assertNull(output.get(i));
output.set(i,i * i);
}
else {
Assert.assertEquals(i * i,(int)output.get(i));
}
}
}
Class: org.apache.ambari.server.utils.TestShellCommandUtil APIUtilityVerifier BranchVerifier InternalCallVerifier EqualityVerifier
@Test public void testUnixFilePermissions() throws Exception {
File dummyFile=new File(temp.getRoot() + File.separator + "dummy");
new FileOutputStream(dummyFile).close();
if (ShellCommandUtil.LINUX) {
ShellCommandUtil.setUnixFilePermissions("600",dummyFile.getAbsolutePath());
String p=ShellCommandUtil.getUnixFilePermissions(dummyFile.getAbsolutePath());
assertEquals("600",p);
ShellCommandUtil.setUnixFilePermissions("444",dummyFile.getAbsolutePath());
p=ShellCommandUtil.getUnixFilePermissions(dummyFile.getAbsolutePath());
assertEquals("444",p);
ShellCommandUtil.setUnixFilePermissions("777",dummyFile.getAbsolutePath());
p=ShellCommandUtil.getUnixFilePermissions(dummyFile.getAbsolutePath());
assertEquals("777",p);
}
else {
ShellCommandUtil.setUnixFilePermissions(ShellCommandUtil.MASK_OWNER_ONLY_RW,dummyFile.getAbsolutePath());
String p=ShellCommandUtil.getUnixFilePermissions(dummyFile.getAbsolutePath());
assertEquals(p,ShellCommandUtil.MASK_EVERYBODY_RWX);
}
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testRunCommand() throws Exception {
ShellCommandUtil.Result result=null;
if (ShellCommandUtil.LINUX) {
result=ShellCommandUtil.runCommand(new String[]{"echo","dummy"});
assertEquals(0,result.getExitCode());
assertEquals("dummy\n",result.getStdout());
assertEquals("",result.getStderr());
assertTrue(result.isSuccessful());
result=ShellCommandUtil.runCommand(new String[]{"false"});
assertEquals(1,result.getExitCode());
assertFalse(result.isSuccessful());
}
else {
}
}
Class: org.apache.ambari.server.view.ClusterImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetConfigurationValue() throws Exception {
Cluster cluster=createNiceMock(Cluster.class);
Config config=createNiceMock(Config.class);
Map properties=new HashMap();
properties.put("foo","bar");
expect(cluster.getDesiredConfigByType("core-site")).andReturn(config).anyTimes();
expect(config.getProperties()).andReturn(properties).anyTimes();
replay(cluster,config);
ClusterImpl clusterImpl=new ClusterImpl(cluster);
Assert.assertEquals("bar",clusterImpl.getConfigurationValue("core-site","foo"));
verify(cluster,config);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetName() throws Exception {
Cluster cluster=createNiceMock(Cluster.class);
expect(cluster.getClusterName()).andReturn("c1").anyTimes();
replay(cluster);
ClusterImpl clusterImpl=new ClusterImpl(cluster);
Assert.assertEquals("c1",clusterImpl.getName());
verify(cluster);
}
Class: org.apache.ambari.server.view.DefaultMaskerTest InternalCallVerifier BooleanVerifier NullVerifier HybridVerifier
@Test public void testMask() throws Exception {
final String source="unmasked";
final String masked=masker.mask(source);
Assert.assertNotNull(masked);
Assert.assertTrue(masked.length() > 0);
}
InternalCallVerifier EqualityVerifier
@Test public void testMaskUnmask() throws Exception {
final String source="unmasked";
final String masked=masker.mask(source);
final String unmasked=masker.unmask(masked);
Assert.assertEquals(source,unmasked);
}
Class: org.apache.ambari.server.view.HttpImpersonatorImplTest InternalCallVerifier EqualityVerifier
@Test public void testRequestURL() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
String responseBody="Response body...";
InputStream inputStream=new ByteArrayInputStream(responseBody.getBytes(Charset.forName("UTF-8")));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),eq((String)null),eq((Map>)null))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
expect(viewContext.getUsername()).andReturn("joe").anyTimes();
replay(streamProvider,urlConnection,viewContext);
HttpImpersonatorImpl impersonator=new HttpImpersonatorImpl(viewContext,streamProvider);
ImpersonatorSetting setting=new ImpersonatorSettingImpl(viewContext);
Assert.assertEquals(responseBody,impersonator.requestURL("spec","requestMethod",setting));
verify(streamProvider,urlConnection,viewContext);
}
InternalCallVerifier EqualityVerifier
@Test public void testRequestURLWithCustom() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
String responseBody="Response body...";
InputStream inputStream=new ByteArrayInputStream(responseBody.getBytes(Charset.forName("UTF-8")));
expect(streamProvider.processURL(eq("spec?impersonate=hive"),eq("requestMethod"),eq((String)null),eq((Map>)null))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection);
HttpImpersonatorImpl impersonator=new HttpImpersonatorImpl(viewContext,streamProvider);
ImpersonatorSetting setting=new ImpersonatorSettingImpl("hive","impersonate");
Assert.assertEquals(responseBody,impersonator.requestURL("spec","requestMethod",setting));
verify(streamProvider,urlConnection);
}
Class: org.apache.ambari.server.view.ViewAmbariStreamProviderTest InternalCallVerifier EqualityVerifier
@Test public void testReadFromNullInputStreamBody() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
AmbariSessionManager sessionManager=createNiceMock(AmbariSessionManager.class);
AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
InputStream body=null;
Map headers=new HashMap();
headers.put("header","headerValue");
headers.put("Cookie","FOO=bar");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
headerMap.put("Cookie",Collections.singletonList("FOO=bar; AMBARISESSIONID=abcdefg"));
expect(sessionManager.getCurrentSessionId()).andReturn("abcdefg");
expect(sessionManager.getSessionCookie()).andReturn("AMBARISESSIONID");
expect(controller.getAmbariServerURI("/spec")).andReturn("http://c6401.ambari.apache.org:8080/spec");
expect(streamProvider.processURL(eq("http://c6401.ambari.apache.org:8080/spec"),eq("requestMethod"),aryEq((byte[])null),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,sessionManager,controller,urlConnection,inputStream);
ViewAmbariStreamProvider viewAmbariStreamProvider=new ViewAmbariStreamProvider(streamProvider,sessionManager,controller);
Assert.assertEquals(inputStream,viewAmbariStreamProvider.readFrom("spec","requestMethod",body,headers,true));
verify(streamProvider,sessionManager,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadFromNew() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
AmbariSessionManager sessionManager=createNiceMock(AmbariSessionManager.class);
AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
InputStream body=new ByteArrayInputStream("params".getBytes());
Map headers=new HashMap();
headers.put("header","headerValue");
headers.put("Cookie","FOO=bar");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
headerMap.put("Cookie",Collections.singletonList("FOO=bar; AMBARISESSIONID=abcdefg"));
expect(sessionManager.getCurrentSessionId()).andReturn("abcdefg");
expect(sessionManager.getSessionCookie()).andReturn("AMBARISESSIONID");
expect(controller.getAmbariServerURI("/spec")).andReturn("http://c6401.ambari.apache.org:8080/spec");
expect(streamProvider.processURL(eq("http://c6401.ambari.apache.org:8080/spec"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,sessionManager,controller,urlConnection,inputStream);
ViewAmbariStreamProvider viewAmbariStreamProvider=new ViewAmbariStreamProvider(streamProvider,sessionManager,controller);
Assert.assertEquals(inputStream,viewAmbariStreamProvider.readFrom("spec","requestMethod",body,headers,true));
verify(streamProvider,sessionManager,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadFrom() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
AmbariSessionManager sessionManager=createNiceMock(AmbariSessionManager.class);
AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
Map headers=new HashMap();
headers.put("header","headerValue");
headers.put("Cookie","FOO=bar");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
headerMap.put("Cookie",Collections.singletonList("FOO=bar; AMBARISESSIONID=abcdefg"));
expect(sessionManager.getCurrentSessionId()).andReturn("abcdefg");
expect(sessionManager.getSessionCookie()).andReturn("AMBARISESSIONID");
expect(controller.getAmbariServerURI("/spec")).andReturn("http://c6401.ambari.apache.org:8080/spec");
expect(streamProvider.processURL(eq("http://c6401.ambari.apache.org:8080/spec"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,sessionManager,controller,urlConnection,inputStream);
ViewAmbariStreamProvider viewAmbariStreamProvider=new ViewAmbariStreamProvider(streamProvider,sessionManager,controller);
Assert.assertEquals(inputStream,viewAmbariStreamProvider.readFrom("spec","requestMethod","params",headers,true));
verify(streamProvider,sessionManager,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadFromNullStringBody() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
AmbariSessionManager sessionManager=createNiceMock(AmbariSessionManager.class);
AmbariManagementController controller=createNiceMock(AmbariManagementController.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
String body=null;
Map headers=new HashMap();
headers.put("header","headerValue");
headers.put("Cookie","FOO=bar");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
headerMap.put("Cookie",Collections.singletonList("FOO=bar; AMBARISESSIONID=abcdefg"));
expect(sessionManager.getCurrentSessionId()).andReturn("abcdefg");
expect(sessionManager.getSessionCookie()).andReturn("AMBARISESSIONID");
expect(controller.getAmbariServerURI("/spec")).andReturn("http://c6401.ambari.apache.org:8080/spec");
expect(streamProvider.processURL(eq("http://c6401.ambari.apache.org:8080/spec"),eq("requestMethod"),aryEq((byte[])null),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,sessionManager,controller,urlConnection,inputStream);
ViewAmbariStreamProvider viewAmbariStreamProvider=new ViewAmbariStreamProvider(streamProvider,sessionManager,controller);
Assert.assertEquals(inputStream,viewAmbariStreamProvider.readFrom("spec","requestMethod",body,headers,true));
verify(streamProvider,sessionManager,urlConnection,inputStream);
}
Class: org.apache.ambari.server.view.ViewClassLoaderTest APIUtilityVerifier InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testGetResource() throws Exception {
ClassLoader parentClassLoader=createMock(ClassLoader.class);
URL parentResource=new File("parent-resource").toURI().toURL();
ViewConfig viewConfig=createNiceMock(ViewConfig.class);
expect(parentClassLoader.getResource("parent-resource")).andReturn(parentResource).once();
replay(parentClassLoader,viewConfig);
File file=new File("./src/test/resources");
URL testURL=file.toURI().toURL();
URL[] urls=new URL[]{testURL};
ViewClassLoader classLoader=new ViewClassLoader(viewConfig,parentClassLoader,urls);
URL url=classLoader.getResource("ambari.properties");
Assert.assertNotNull(url);
url=classLoader.getResource("parent-resource");
Assert.assertNotNull(url);
Assert.assertSame(parentResource,url);
verify(parentClassLoader,viewConfig);
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier NullVerifier HybridVerifier
@Test public void testLoadClass() throws Exception {
TestClassLoader parentClassLoader=createMock(TestClassLoader.class);
Class parentClass=Object.class;
ViewConfig viewConfig=createNiceMock(ViewConfig.class);
expect(parentClassLoader.getPackage("org.apache.ambari.server.view")).andReturn(null).anyTimes();
expect(parentClassLoader.loadClass("java.lang.Object")).andReturn(parentClass).anyTimes();
expect(parentClassLoader.loadClass("ParentClass")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("org.apache.ambari.server.controller.spi.ResourceProvider")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("org.apache.ambari.view.ViewContext")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("javax.xml.parsers.SAXParserFactory")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("com.google.inject.AbstractModule")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("org.slf4j.LoggerFactory")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("com.sun.jersey.api.ConflictException")).andReturn(parentClass).once();
expect(parentClassLoader.loadClass("org.apache.velocity.VelocityContext")).andReturn(parentClass).once();
replay(parentClassLoader,viewConfig);
File file=new File("./target/test-classes");
URL testURL=file.toURI().toURL();
URL[] urls=new URL[]{testURL};
ViewClassLoader classLoader=new ViewClassLoader(viewConfig,parentClassLoader,urls);
Class clazz=classLoader.loadClass("ParentClass");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("org.apache.ambari.server.controller.spi.ResourceProvider");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("org.apache.ambari.view.ViewContext");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("javax.xml.parsers.SAXParserFactory");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("com.google.inject.AbstractModule");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("org.slf4j.LoggerFactory");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("com.sun.jersey.api.ConflictException");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
clazz=classLoader.loadClass("org.apache.velocity.VelocityContext");
Assert.assertNotNull(clazz);
Assert.assertSame(parentClass,clazz);
verify(parentClassLoader,viewConfig);
}
Class: org.apache.ambari.server.view.ViewContextImplTest InternalCallVerifier EqualityVerifier
@Test public void testGetResourceProvider() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
ResourceProvider provider=createNiceMock(ResourceProvider.class);
Resource.Type type=new Resource.Type("MY_VIEW{1.0.0}/myType");
viewInstanceDefinition.addResourceProvider(type,provider);
ViewContextImpl viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
Assert.assertEquals(provider,viewContext.getResourceProvider("myType"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetAmbariStreamProvider() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
ViewAmbariStreamProvider ambariStreamProvider=createNiceMock(ViewAmbariStreamProvider.class);
ResourceProvider provider=createNiceMock(ResourceProvider.class);
Resource.Type type=new Resource.Type("MY_VIEW/myType");
viewInstanceDefinition.addResourceProvider(type,provider);
expect(viewRegistry.createAmbariStreamProvider()).andReturn(ambariStreamProvider);
replay(viewRegistry);
ViewContextImpl viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
Assert.assertEquals(ambariStreamProvider,viewContext.getAmbariStreamProvider());
verify(viewRegistry);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetURLStreamProvider() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
ViewURLStreamProvider urlStreamProvider=createNiceMock(ViewURLStreamProvider.class);
ViewURLStreamProvider urlStreamProvider2=createNiceMock(ViewURLStreamProvider.class);
ResourceProvider provider=createNiceMock(ResourceProvider.class);
Resource.Type type=new Resource.Type("MY_VIEW/myType");
viewInstanceDefinition.addResourceProvider(type,provider);
ViewContextImpl viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
expect(viewRegistry.createURLStreamProvider(viewContext)).andReturn(urlStreamProvider);
expect(viewRegistry.createURLStreamProvider(viewContext)).andReturn(urlStreamProvider2);
replay(viewRegistry);
Assert.assertEquals(urlStreamProvider,viewContext.getURLStreamProvider());
Assert.assertEquals(urlStreamProvider2,viewContext.getURLStreamProvider());
verify(viewRegistry);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetURLConnectionProvider() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
ViewURLStreamProvider urlStreamProvider=createNiceMock(ViewURLStreamProvider.class);
ResourceProvider provider=createNiceMock(ResourceProvider.class);
Resource.Type type=new Resource.Type("MY_VIEW/myType");
viewInstanceDefinition.addResourceProvider(type,provider);
ViewContext viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
expect(viewRegistry.createURLStreamProvider(viewContext)).andReturn(urlStreamProvider);
replay(viewRegistry);
Assert.assertEquals(urlStreamProvider,viewContext.getURLConnectionProvider());
verify(viewRegistry);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetCluster() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
Cluster cluster=createNiceMock(Cluster.class);
expect(viewRegistry.getCluster(viewInstanceDefinition)).andReturn(cluster);
replay(viewRegistry);
ViewContextImpl viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
Assert.assertEquals(cluster,viewContext.getCluster());
verify(viewRegistry);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetPropertiesWithParameters() throws Exception {
InstanceConfig instanceConfig=createNiceMock(InstanceConfig.class);
expect(instanceConfig.getName()).andReturn("Instance").anyTimes();
replay(instanceConfig);
ViewEntity viewDefinition=createNiceMock(ViewEntity.class);
expect(viewDefinition.getName()).andReturn("View").anyTimes();
expect(viewDefinition.getCommonName()).andReturn("View").times(2);
expect(viewDefinition.getClassLoader()).andReturn(ViewContextImplTest.class.getClassLoader()).anyTimes();
expect(viewDefinition.getConfiguration()).andReturn(ViewConfigTest.getConfig()).anyTimes();
ViewParameterEntity parameter1=createNiceMock(ViewParameterEntity.class);
expect(parameter1.getName()).andReturn("p1").anyTimes();
ViewParameterEntity parameter2=createNiceMock(ViewParameterEntity.class);
expect(parameter2.getName()).andReturn("p2").anyTimes();
expect(viewDefinition.getParameters()).andReturn(Arrays.asList(parameter1,parameter2)).anyTimes();
replay(viewDefinition,parameter1,parameter2);
ViewInstanceEntity viewInstanceDefinition=createMockBuilder(ViewInstanceEntity.class).addMockedMethod("getUsername").addMockedMethod("getName").addMockedMethod("getViewEntity").withConstructor(viewDefinition,instanceConfig).createMock();
expect(viewInstanceDefinition.getUsername()).andReturn("User").times(1);
expect(viewInstanceDefinition.getUsername()).andReturn("User2").times(1);
expect(viewInstanceDefinition.getName()).andReturn("Instance").anyTimes();
expect(viewInstanceDefinition.getViewEntity()).andReturn(viewDefinition).anyTimes();
replay(viewInstanceDefinition);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
expect(viewRegistry.getCluster(viewInstanceDefinition)).andReturn(null).anyTimes();
replay(viewRegistry);
viewInstanceDefinition.putProperty("p1","/tmp/some/path/${username}");
viewInstanceDefinition.putProperty("p2",new DefaultMasker().mask("/tmp/path/$viewName"));
viewInstanceDefinition.putProperty("p3","/path/$instanceName");
viewInstanceDefinition.putProperty("p4","/path/to/${unspecified_parameter}");
viewInstanceDefinition.putProperty("p5","/path/to/${incorrect_parameter");
viewInstanceDefinition.putProperty("p6","/path/to/\\${username}");
viewInstanceDefinition.putProperty("p7","/path/to/\\$viewName");
viewInstanceDefinition.putProperty("p8",null);
ViewContextImpl viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
Map properties=viewContext.getProperties();
Assert.assertEquals(8,properties.size());
Assert.assertEquals("/tmp/some/path/User",properties.get("p1"));
Assert.assertEquals("/tmp/path/View",properties.get("p2"));
Assert.assertEquals("/path/Instance",properties.get("p3"));
Assert.assertEquals("/path/to/${unspecified_parameter}",properties.get("p4"));
Assert.assertEquals("/path/to/${incorrect_parameter",properties.get("p5"));
Assert.assertEquals("/path/to/${username}",properties.get("p6"));
Assert.assertEquals("/path/to/$viewName",properties.get("p7"));
Assert.assertNull(properties.get("p8"));
properties=viewContext.getProperties();
Assert.assertEquals(8,properties.size());
Assert.assertEquals("/tmp/some/path/User2",properties.get("p1"));
Assert.assertEquals("/tmp/path/View",properties.get("p2"));
Assert.assertEquals("/path/Instance",properties.get("p3"));
Assert.assertEquals("/path/to/${unspecified_parameter}",properties.get("p4"));
Assert.assertEquals("/path/to/${incorrect_parameter",properties.get("p5"));
Assert.assertEquals("/path/to/${username}",properties.get("p6"));
Assert.assertEquals("/path/to/$viewName",properties.get("p7"));
Assert.assertNull(properties.get("p8"));
}
InternalCallVerifier EqualityVerifier
@Test public void testGetProperties() throws Exception {
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=new ViewInstanceEntity(viewDefinition,instanceConfig);
ViewRegistry viewRegistry=createNiceMock(ViewRegistry.class);
expect(viewRegistry.getCluster(viewInstanceDefinition)).andReturn(null).anyTimes();
viewInstanceDefinition.putProperty("p1","v1");
viewInstanceDefinition.putProperty("p2",new DefaultMasker().mask("v2"));
viewInstanceDefinition.putProperty("p3","v3");
ViewContextImpl viewContext=new ViewContextImpl(viewInstanceDefinition,viewRegistry);
Map properties=viewContext.getProperties();
Assert.assertEquals(3,properties.size());
Assert.assertEquals("v1",properties.get("p1"));
Assert.assertEquals("v2",properties.get("p2"));
Assert.assertEquals("v3",properties.get("p3"));
}
Class: org.apache.ambari.server.view.ViewExtractorTest APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier
@Test public void testEnsureExtractedArchiveDirectory() throws Exception {
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(10);
resourceTypeEntity.setName("MY_VIEW{1.0.0}");
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
viewDefinition.setResourceType(resourceTypeEntity);
expect(extractedArchiveDir.exists()).andReturn(true);
replay(extractedArchiveDir,viewArchive,archiveDir,entryFile,classesDir,libDir,metaInfDir,viewJarFile,jarEntry,fos,configuration,viewDir,fileEntry,viewDAO);
ViewExtractor viewExtractor=getViewExtractor(viewDefinition);
if (System.getProperty("os.name").contains("Windows")) {
Assert.assertTrue(viewExtractor.ensureExtractedArchiveDirectory("\\var\\lib\\ambari-server\\resources\\views\\work"));
}
else {
Assert.assertTrue(viewExtractor.ensureExtractedArchiveDirectory("/var/lib/ambari-server/resources/views/work"));
}
verify(extractedArchiveDir,viewArchive,archiveDir,entryFile,classesDir,libDir,metaInfDir,viewJarFile,jarEntry,fos,configuration,viewDir,fileEntry,viewDAO);
reset(extractedArchiveDir);
expect(extractedArchiveDir.exists()).andReturn(false);
expect(extractedArchiveDir.mkdir()).andReturn(true);
replay(extractedArchiveDir);
viewExtractor=getViewExtractor(viewDefinition);
if (System.getProperty("os.name").contains("Windows")) {
Assert.assertTrue(viewExtractor.ensureExtractedArchiveDirectory("\\var\\lib\\ambari-server\\resources\\views\\work"));
}
else {
Assert.assertTrue(viewExtractor.ensureExtractedArchiveDirectory("/var/lib/ambari-server/resources/views/work"));
}
verify(extractedArchiveDir);
reset(extractedArchiveDir);
expect(extractedArchiveDir.exists()).andReturn(false);
expect(extractedArchiveDir.mkdir()).andReturn(false);
replay(extractedArchiveDir);
viewExtractor=getViewExtractor(viewDefinition);
if (System.getProperty("os.name").contains("Windows")) {
Assert.assertFalse(viewExtractor.ensureExtractedArchiveDirectory("\\var\\lib\\ambari-server\\resources\\views\\work"));
}
else {
Assert.assertFalse(viewExtractor.ensureExtractedArchiveDirectory("/var/lib/ambari-server/resources/views/work"));
}
verify(extractedArchiveDir);
}
Class: org.apache.ambari.server.view.ViewRegistryTest InternalCallVerifier BooleanVerifier
@Test public void testCheckViewVersions(){
ViewRegistry registry=ViewRegistry.getInstance();
ViewEntity viewEntity=createNiceMock(ViewEntity.class);
ViewConfig config=createNiceMock(ViewConfig.class);
expect(viewEntity.getConfiguration()).andReturn(config).anyTimes();
expect(config.getMinAmbariVersion()).andReturn(null);
expect(config.getMaxAmbariVersion()).andReturn(null);
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn("3.0.0");
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn("1.5");
expect(config.getMinAmbariVersion()).andReturn("2.5");
expect(config.getMinAmbariVersion()).andReturn(null);
expect(config.getMaxAmbariVersion()).andReturn("3.0.0");
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn(null);
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn("*");
expect(config.getMinAmbariVersion()).andReturn("*");
expect(config.getMaxAmbariVersion()).andReturn("3.0.0");
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn("2.*");
expect(config.getMinAmbariVersion()).andReturn("1.*");
expect(config.getMaxAmbariVersion()).andReturn("3.0.0");
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn("2.1.*");
expect(config.getMinAmbariVersion()).andReturn("1.5.*");
expect(config.getMaxAmbariVersion()).andReturn("3.0.0");
expect(config.getMinAmbariVersion()).andReturn("1.0.0");
expect(config.getMaxAmbariVersion()).andReturn("1.9.9.*");
expect(config.getMinAmbariVersion()).andReturn("2.0.0.1.*");
replay(viewEntity,config);
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertFalse(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertFalse(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertTrue(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertFalse(registry.checkViewVersions(viewEntity,"2.0.0"));
Assert.assertFalse(registry.checkViewVersions(viewEntity,"2.0.0"));
verify(viewEntity,config);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadViewArchives_exception() throws Exception {
File viewDir=createNiceMock(File.class);
File extractedArchiveDir=createNiceMock(File.class);
File viewArchive=createNiceMock(File.class);
File archiveDir=createNiceMock(File.class);
File entryFile=createNiceMock(File.class);
File classesDir=createNiceMock(File.class);
File libDir=createNiceMock(File.class);
File metaInfDir=createNiceMock(File.class);
File fileEntry=createNiceMock(File.class);
JarInputStream viewJarFile=createNiceMock(JarInputStream.class);
JarEntry jarEntry=createNiceMock(JarEntry.class);
FileOutputStream fos=createMock(FileOutputStream.class);
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(10);
resourceTypeEntity.setName("MY_VIEW{1.0.0}");
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
viewDefinition.setResourceType(resourceTypeEntity);
Set viewInstanceEntities=ViewInstanceEntityTest.getViewInstanceEntities(viewDefinition);
viewDefinition.setInstances(viewInstanceEntities);
Map viewConfigs=Collections.singletonMap(viewArchive,viewDefinition.getConfiguration());
long resourceId=99L;
for ( ViewInstanceEntity viewInstanceEntity : viewInstanceEntities) {
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setId(resourceId);
resourceEntity.setResourceType(resourceTypeEntity);
viewInstanceEntity.setResource(resourceEntity);
}
Map files=new HashMap();
if (System.getProperty("os.name").contains("Windows")) {
files.put("\\var\\lib\\ambari-server\\resources\\views\\work",extractedArchiveDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}",archiveDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\view.xml",entryFile);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\WEB-INF/classes",classesDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\WEB-INF/lib",libDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\META-INF",metaInfDir);
}
else {
files.put("/var/lib/ambari-server/resources/views/work",extractedArchiveDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}",archiveDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/view.xml",entryFile);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/WEB-INF/classes",classesDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/WEB-INF/lib",libDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/META-INF",metaInfDir);
}
Map outputStreams=new HashMap();
outputStreams.put(entryFile,fos);
Map jarFiles=new HashMap();
jarFiles.put(viewArchive,viewJarFile);
expect(configuration.getViewsDir()).andReturn(viewDir).anyTimes();
if (System.getProperty("os.name").contains("Windows")) {
expect(viewDir.getAbsolutePath()).andReturn("\\var\\lib\\ambari-server\\resources\\views").anyTimes();
}
else {
expect(viewDir.getAbsolutePath()).andReturn("/var/lib/ambari-server/resources/views").anyTimes();
}
expect(configuration.getViewExtractionThreadPoolCoreSize()).andReturn(2).anyTimes();
expect(configuration.getViewExtractionThreadPoolMaxSize()).andReturn(3).anyTimes();
expect(configuration.getViewExtractionThreadPoolTimeout()).andReturn(10000L).anyTimes();
expect(viewDir.listFiles()).andReturn(new File[]{viewArchive}).anyTimes();
expect(viewArchive.isDirectory()).andReturn(false);
if (System.getProperty("os.name").contains("Windows")) {
expect(viewArchive.getAbsolutePath()).andReturn("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}").anyTimes();
}
else {
expect(viewArchive.getAbsolutePath()).andReturn("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}").anyTimes();
}
expect(archiveDir.exists()).andReturn(false);
if (System.getProperty("os.name").contains("Windows")) {
expect(archiveDir.getAbsolutePath()).andReturn("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}").anyTimes();
}
else {
expect(archiveDir.getAbsolutePath()).andReturn("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}").anyTimes();
}
expect(archiveDir.mkdir()).andReturn(true);
expect(archiveDir.toURI()).andReturn(new URI("file:./"));
expect(metaInfDir.mkdir()).andReturn(true);
expect(viewJarFile.getNextJarEntry()).andReturn(jarEntry);
expect(viewJarFile.getNextJarEntry()).andReturn(null);
expect(jarEntry.getName()).andReturn("view.xml");
expect(jarEntry.isDirectory()).andReturn(false);
expect(viewJarFile.read(anyObject(byte[].class))).andReturn(10);
expect(viewJarFile.read(anyObject(byte[].class))).andReturn(-1);
fos.write(anyObject(byte[].class),eq(0),eq(10));
fos.flush();
fos.close();
viewJarFile.closeEntry();
viewJarFile.close();
expect(extractedArchiveDir.exists()).andReturn(false);
expect(extractedArchiveDir.mkdir()).andReturn(true);
expect(classesDir.exists()).andReturn(true);
expect(classesDir.toURI()).andReturn(new URI("file:./"));
expect(libDir.exists()).andReturn(true);
expect(libDir.listFiles()).andReturn(new File[]{fileEntry});
expect(fileEntry.toURI()).andReturn(new URI("file:./"));
expect(viewDAO.findByName("MY_VIEW{1.0.0}")).andThrow(new IllegalArgumentException("Expected exception."));
replay(configuration,viewDir,extractedArchiveDir,viewArchive,archiveDir,entryFile,classesDir,libDir,metaInfDir,fileEntry,viewJarFile,jarEntry,fos,viewDAO);
TestViewArchiveUtility archiveUtility=new TestViewArchiveUtility(viewConfigs,files,outputStreams,jarFiles,false);
ViewRegistry registry=getRegistry(viewDAO,viewInstanceDAO,userDAO,memberDAO,privilegeDAO,resourceDAO,resourceTypeDAO,securityHelper,handlerList,null,archiveUtility,ambariMetaInfo);
registry.readViewArchives();
ViewEntity view=null;
long timeout=System.currentTimeMillis() + 10000L;
while ((view == null || !view.getStatus().equals(ViewDefinition.ViewStatus.ERROR)) && System.currentTimeMillis() < timeout) {
view=registry.getDefinition("MY_VIEW","1.0.0");
}
Assert.assertNotNull(view);
Assert.assertEquals(ViewDefinition.ViewStatus.ERROR,view.getStatus());
verify(configuration,viewDir,extractedArchiveDir,viewArchive,archiveDir,entryFile,classesDir,libDir,metaInfDir,fileEntry,viewJarFile,jarEntry,fos,viewDAO);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testUninstallViewInstance() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Configuration ambariConfig=new Configuration(new Properties());
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
ResourceEntity resource=new ResourceEntity();
resource.setId(3L);
viewInstanceEntity.setResource(resource);
PrivilegeEntity privilege1=createNiceMock(PrivilegeEntity.class);
PrivilegeEntity privilege2=createNiceMock(PrivilegeEntity.class);
List privileges=Arrays.asList(privilege1,privilege2);
PrincipalEntity principalEntity=createNiceMock(PrincipalEntity.class);
expect(privilege1.getPrincipal()).andReturn(principalEntity);
expect(privilege2.getPrincipal()).andReturn(principalEntity);
principalEntity.removePrivilege(privilege1);
principalEntity.removePrivilege(privilege2);
expect(privilegeDAO.findByResourceId(3L)).andReturn(privileges);
privilegeDAO.remove(privilege1);
privilegeDAO.remove(privilege2);
viewInstanceDAO.remove(viewInstanceEntity);
handlerList.removeViewInstance(viewInstanceEntity);
replay(viewInstanceDAO,privilegeDAO,handlerList,privilege1,privilege2,principalEntity);
registry.addDefinition(viewEntity);
registry.addInstanceDefinition(viewEntity,viewInstanceEntity);
registry.uninstallViewInstance(viewInstanceEntity);
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(0,viewInstanceDefinitions.size());
verify(viewInstanceDAO,privilegeDAO,handlerList,privilege1,privilege2,principalEntity);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
ViewConfig config=ViewConfigTest.getConfig();
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewRegistry registry=ViewRegistry.getInstance();
viewDefinition.setConfiguration(config);
registry.setupViewDefinition(viewDefinition,getClass().getClassLoader());
Set subResourceDefinitions=registry.getSubResourceDefinitions(viewDefinition.getCommonName(),viewDefinition.getVersion());
Assert.assertEquals(3,subResourceDefinitions.size());
Set names=new HashSet();
for ( SubResourceDefinition definition : subResourceDefinitions) {
names.add(definition.getType().name());
}
Assert.assertTrue(names.contains("MY_VIEW{1.0.0}/resources"));
Assert.assertTrue(names.contains("MY_VIEW{1.0.0}/resource"));
Assert.assertTrue(names.contains("MY_VIEW{1.0.0}/subresource"));
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetDefinitions() throws Exception {
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewRegistry registry=ViewRegistry.getInstance();
registry.addDefinition(viewDefinition);
Assert.assertEquals(viewDefinition,registry.getDefinition("MY_VIEW","1.0.0"));
Collection viewDefinitions=registry.getDefinitions();
Assert.assertEquals(1,viewDefinitions.size());
Assert.assertEquals(viewDefinition,viewDefinitions.iterator().next());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testListener_allVersions() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
TestListener listener=new TestListener();
registry.registerListener(listener,"MY_VIEW",null);
EventImpl event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_1);
registry.fireEvent(event);
Assert.assertEquals(event,listener.getLastEvent());
listener.clear();
event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_2);
registry.fireEvent(event);
Assert.assertEquals(event,listener.getLastEvent());
listener.clear();
registry.unregisterListener(listener,"MY_VIEW",null);
event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_1);
registry.fireEvent(event);
Assert.assertNull(listener.getLastEvent());
event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_2);
registry.fireEvent(event);
Assert.assertNull(listener.getLastEvent());
}
InternalCallVerifier BooleanVerifier
@Test public void testIncludeDefinitionForUserHasAccess(){
ViewRegistry registry=ViewRegistry.getInstance();
ViewEntity viewEntity=createNiceMock(ViewEntity.class);
ViewInstanceEntity instanceEntity=createNiceMock(ViewInstanceEntity.class);
ResourceEntity resourceEntity=createNiceMock(ResourceEntity.class);
ResourceTypeEntity resourceTypeEntity=createNiceMock(ResourceTypeEntity.class);
Collection instances=new ArrayList();
instances.add(instanceEntity);
expect(viewEntity.getInstances()).andReturn(instances);
expect(instanceEntity.getResource()).andReturn(resourceEntity);
expect(resourceEntity.getId()).andReturn(54L).anyTimes();
expect(resourceEntity.getResourceType()).andReturn(resourceTypeEntity).anyTimes();
expect(resourceTypeEntity.getId()).andReturn(ResourceType.VIEW.getId()).anyTimes();
expect(resourceTypeEntity.getName()).andReturn(ResourceType.VIEW.name()).anyTimes();
replay(viewEntity,instanceEntity,resourceEntity,resourceTypeEntity,configuration);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createViewUser(resourceEntity.getId()));
Assert.assertTrue(registry.includeDefinition(viewEntity));
verify(viewEntity,instanceEntity,resourceEntity,resourceTypeEntity,configuration);
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier BooleanVerifier HybridVerifier
@Test public void testInstallViewInstance_validatorFail() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
Validator validator=createNiceMock(Validator.class);
ValidationResult result=createNiceMock(ValidationResult.class);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
viewEntity.setValidator(validator);
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
expect(validator.validateInstance(viewInstanceEntity,Validator.ValidationContext.PRE_CREATE)).andReturn(result).anyTimes();
expect(result.isValid()).andReturn(false).anyTimes();
replay(viewDAO,viewInstanceDAO,securityHelper,handlerList,validator,result);
registry.addDefinition(viewEntity);
try {
registry.installViewInstance(viewInstanceEntity);
Assert.fail("expected a ValidationException");
}
catch ( ValidationException e) {
}
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertTrue(viewInstanceDefinitions.isEmpty());
verify(viewDAO,viewInstanceDAO,securityHelper,handlerList,validator,result);
}
APIUtilityVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateViewInstance_validatorFail() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
Validator validator=createNiceMock(Validator.class);
ValidationResult result=createNiceMock(ValidationResult.class);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
viewEntity.setValidator(validator);
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
ViewInstanceEntity updateInstance=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
expect(viewInstanceDAO.findByName("MY_VIEW{1.0.0}",viewInstanceEntity.getInstanceName())).andReturn(viewInstanceEntity).anyTimes();
expect(validator.validateInstance(viewInstanceEntity,Validator.ValidationContext.PRE_UPDATE)).andReturn(result).anyTimes();
expect(result.isValid()).andReturn(false).anyTimes();
replay(viewDAO,viewInstanceDAO,securityHelper,validator,result);
registry.addDefinition(viewEntity);
registry.installViewInstance(viewInstanceEntity);
try {
registry.updateViewInstance(updateInstance);
Assert.fail("expected a ValidationException");
}
catch ( ValidationException e) {
}
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(1,viewInstanceDefinitions.size());
ViewInstanceEntity instanceEntity=viewInstanceDefinitions.iterator().next();
Assert.assertEquals("v2-1",instanceEntity.getProperty("p2").getValue());
Assert.assertEquals(viewInstanceEntity,viewInstanceDefinitions.iterator().next());
verify(viewDAO,viewInstanceDAO,securityHelper,validator,result);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testUpdateViewInstance_validatorPass() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
Validator validator=createNiceMock(Validator.class);
ValidationResult result=createNiceMock(ValidationResult.class);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
viewEntity.setValidator(validator);
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
ViewInstanceEntity updateInstance=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
expect(viewInstanceDAO.findByName("MY_VIEW{1.0.0}",viewInstanceEntity.getInstanceName())).andReturn(viewInstanceEntity).anyTimes();
expect(validator.validateInstance(viewInstanceEntity,Validator.ValidationContext.PRE_UPDATE)).andReturn(result).anyTimes();
expect(result.isValid()).andReturn(true).anyTimes();
replay(viewDAO,viewInstanceDAO,securityHelper,validator,result);
registry.addDefinition(viewEntity);
registry.installViewInstance(viewInstanceEntity);
registry.updateViewInstance(updateInstance);
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(1,viewInstanceDefinitions.size());
ViewInstanceEntity instanceEntity=viewInstanceDefinitions.iterator().next();
Assert.assertEquals("v2-1",instanceEntity.getProperty("p2").getValue());
Assert.assertEquals(viewInstanceEntity,viewInstanceDefinitions.iterator().next());
verify(viewDAO,viewInstanceDAO,securityHelper,validator,result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddInstanceDefinition() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
ViewEntity viewEntity=ViewEntityTest.getViewEntity();
InstanceConfig instanceConfig=InstanceConfigTest.getInstanceConfigs().get(0);
ViewInstanceEntity viewInstanceEntity=new ViewInstanceEntity(viewEntity,instanceConfig);
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(10);
resourceTypeEntity.setName(viewEntity.getName());
viewEntity.setResourceType(resourceTypeEntity);
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setId(20L);
resourceEntity.setResourceType(resourceTypeEntity);
viewInstanceEntity.setResource(resourceEntity);
registry.addDefinition(viewEntity);
registry.addInstanceDefinition(viewEntity,viewInstanceEntity);
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(1,viewInstanceDefinitions.size());
Assert.assertEquals(viewInstanceEntity,viewInstanceDefinitions.iterator().next());
}
InternalCallVerifier BooleanVerifier
@Test public void testIncludeDefinitionForUserNoInstances(){
ViewRegistry registry=ViewRegistry.getInstance();
ViewEntity viewEntity=createNiceMock(ViewEntity.class);
expect(viewEntity.getInstances()).andReturn(Collections.emptyList()).anyTimes();
replay(viewEntity,configuration);
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createViewUser(1L));
Assert.assertFalse(registry.includeDefinition(viewEntity));
verify(viewEntity,configuration);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddGetInstanceDefinitions() throws Exception {
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewInstanceEntity viewInstanceDefinition=ViewInstanceEntityTest.getViewInstanceEntity();
ViewRegistry registry=ViewRegistry.getInstance();
registry.addDefinition(viewDefinition);
registry.addInstanceDefinition(viewDefinition,viewInstanceDefinition);
Assert.assertEquals(viewInstanceDefinition,registry.getInstanceDefinition("MY_VIEW","1.0.0","INSTANCE1"));
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewDefinition);
Assert.assertEquals(1,viewInstanceDefinitions.size());
Assert.assertEquals(viewInstanceDefinition,viewInstanceDefinitions.iterator().next());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testListener() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
TestListener listener=new TestListener();
registry.registerListener(listener,"MY_VIEW","1.0.0");
EventImpl event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_1);
registry.fireEvent(event);
Assert.assertEquals(event,listener.getLastEvent());
listener.clear();
event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_2);
registry.fireEvent(event);
Assert.assertNull(listener.getLastEvent());
registry.unregisterListener(listener,"MY_VIEW","1.0.0");
event=EventImplTest.getEvent("MyEvent",Collections.emptyMap(),VIEW_XML_1);
registry.fireEvent(event);
Assert.assertNull(listener.getLastEvent());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateViewInstance() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
ViewInstanceEntity updateInstance=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
expect(viewInstanceDAO.findByName("MY_VIEW{1.0.0}",viewInstanceEntity.getInstanceName())).andReturn(viewInstanceEntity).anyTimes();
replay(viewDAO,viewInstanceDAO,securityHelper);
registry.addDefinition(viewEntity);
registry.installViewInstance(viewInstanceEntity);
Assert.assertTrue(viewInstanceEntity.isVisible());
updateInstance.setLabel("new label");
updateInstance.setDescription("new description");
updateInstance.setVisible(false);
registry.updateViewInstance(updateInstance);
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(1,viewInstanceDefinitions.size());
ViewInstanceEntity instanceEntity=viewInstanceDefinitions.iterator().next();
Assert.assertEquals("v2-1",instanceEntity.getProperty("p2").getValue());
Assert.assertEquals("new label",instanceEntity.getLabel());
Assert.assertEquals("new description",instanceEntity.getDescription());
Assert.assertFalse(instanceEntity.isVisible());
Assert.assertEquals(viewInstanceEntity,viewInstanceDefinitions.iterator().next());
verify(viewDAO,viewInstanceDAO,securityHelper);
}
APIUtilityVerifier BranchVerifier InternalCallVerifier BooleanVerifier
@Test public void testExtractViewArchive() throws Exception {
File viewDir=createNiceMock(File.class);
File extractedArchiveDir=createNiceMock(File.class);
File viewArchive=createNiceMock(File.class);
File archiveDir=createNiceMock(File.class);
File entryFile=createNiceMock(File.class);
File classesDir=createNiceMock(File.class);
File libDir=createNiceMock(File.class);
File metaInfDir=createNiceMock(File.class);
File fileEntry=createNiceMock(File.class);
JarInputStream viewJarFile=createNiceMock(JarInputStream.class);
JarEntry jarEntry=createNiceMock(JarEntry.class);
InputStream is=createMock(InputStream.class);
FileOutputStream fos=createMock(FileOutputStream.class);
ViewExtractor viewExtractor=createMock(ViewExtractor.class);
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(10);
resourceTypeEntity.setName("MY_VIEW{1.0.0}");
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
viewDefinition.setResourceType(resourceTypeEntity);
Set viewInstanceEntities=ViewInstanceEntityTest.getViewInstanceEntities(viewDefinition);
viewDefinition.setInstances(viewInstanceEntities);
Map viewConfigs=Collections.singletonMap(viewArchive,viewDefinition.getConfiguration());
long resourceId=99L;
for ( ViewInstanceEntity viewInstanceEntity : viewInstanceEntities) {
ResourceEntity resourceEntity=new ResourceEntity();
resourceEntity.setId(resourceId);
resourceEntity.setResourceType(resourceTypeEntity);
viewInstanceEntity.setResource(resourceEntity);
}
Map files=new HashMap();
if (System.getProperty("os.name").contains("Windows")) {
files.put("\\var\\lib\\ambari-server\\resources\\views\\my_view-1.0.0.jar",viewArchive);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work",extractedArchiveDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}",archiveDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\view.xml",entryFile);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\WEB-INF\\classes",classesDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\WEB-INF\\lib",libDir);
files.put("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}\\META-INF",metaInfDir);
}
else {
files.put("/var/lib/ambari-server/resources/views/my_view-1.0.0.jar",viewArchive);
files.put("/var/lib/ambari-server/resources/views/work",extractedArchiveDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}",archiveDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/view.xml",entryFile);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/WEB-INF/classes",classesDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/WEB-INF/lib",libDir);
files.put("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}/META-INF",metaInfDir);
}
Map outputStreams=new HashMap();
outputStreams.put(entryFile,fos);
Map jarFiles=new HashMap();
jarFiles.put(viewArchive,viewJarFile);
expect(configuration.getViewsDir()).andReturn(viewDir);
if (System.getProperty("os.name").contains("Windows")) {
expect(viewDir.getAbsolutePath()).andReturn("\\var\\lib\\ambari-server\\resources\\views");
}
else {
expect(viewDir.getAbsolutePath()).andReturn("/var/lib/ambari-server/resources/views");
}
expect(configuration.getViewExtractionThreadPoolCoreSize()).andReturn(2).anyTimes();
expect(configuration.getViewExtractionThreadPoolMaxSize()).andReturn(3).anyTimes();
expect(configuration.getViewExtractionThreadPoolTimeout()).andReturn(10000L).anyTimes();
if (System.getProperty("os.name").contains("Windows")) {
expect(viewArchive.getAbsolutePath()).andReturn("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}").anyTimes();
}
else {
expect(viewArchive.getAbsolutePath()).andReturn("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}").anyTimes();
}
expect(archiveDir.exists()).andReturn(false);
if (System.getProperty("os.name").contains("Windows")) {
expect(archiveDir.getAbsolutePath()).andReturn("\\var\\lib\\ambari-server\\resources\\views\\work\\MY_VIEW{1.0.0}").anyTimes();
}
else {
expect(archiveDir.getAbsolutePath()).andReturn("/var/lib/ambari-server/resources/views/work/MY_VIEW{1.0.0}").anyTimes();
}
Capture viewEntityCapture=new Capture();
if (System.getProperty("os.name").contains("Windows")) {
expect(viewExtractor.ensureExtractedArchiveDirectory("\\var\\lib\\ambari-server\\resources\\views\\work")).andReturn(true);
}
else {
expect(viewExtractor.ensureExtractedArchiveDirectory("/var/lib/ambari-server/resources/views/work")).andReturn(true);
}
expect(viewExtractor.extractViewArchive(capture(viewEntityCapture),eq(viewArchive),eq(archiveDir))).andReturn(null);
replay(configuration,viewDir,extractedArchiveDir,viewArchive,archiveDir,entryFile,classesDir,libDir,metaInfDir,fileEntry,viewJarFile,jarEntry,is,fos,viewExtractor,resourceDAO,viewDAO,viewInstanceDAO);
TestViewArchiveUtility archiveUtility=new TestViewArchiveUtility(viewConfigs,files,outputStreams,jarFiles,false);
TestViewModule module=new TestViewModule(viewExtractor,archiveUtility,configuration);
if (System.getProperty("os.name").contains("Windows")) {
Assert.assertTrue(ViewRegistry.extractViewArchive("\\var\\lib\\ambari-server\\resources\\views\\my_view-1.0.0.jar",module,true));
}
else {
Assert.assertTrue(ViewRegistry.extractViewArchive("/var/lib/ambari-server/resources/views/my_view-1.0.0.jar",module,true));
}
verify(configuration,viewDir,extractedArchiveDir,viewArchive,archiveDir,entryFile,classesDir,libDir,metaInfDir,fileEntry,viewJarFile,jarEntry,is,fos,viewExtractor,resourceDAO,viewDAO,viewInstanceDAO);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetDefinition() throws Exception {
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewRegistry registry=ViewRegistry.getInstance();
ResourceTypeEntity resourceTypeEntity=new ResourceTypeEntity();
resourceTypeEntity.setId(10);
resourceTypeEntity.setName(viewDefinition.getName());
viewDefinition.setResourceType(resourceTypeEntity);
registry.addDefinition(viewDefinition);
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYING);
Assert.assertNull(registry.getDefinition(resourceTypeEntity));
viewDefinition.setStatus(ViewDefinition.ViewStatus.DEPLOYED);
Assert.assertEquals(viewDefinition,registry.getDefinition(resourceTypeEntity));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testInstallViewInstance_validatorPass() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
Validator validator=createNiceMock(Validator.class);
ValidationResult result=createNiceMock(ValidationResult.class);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
viewEntity.setValidator(validator);
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
handlerList.addViewInstance(viewInstanceEntity);
expect(validator.validateInstance(viewInstanceEntity,Validator.ValidationContext.PRE_CREATE)).andReturn(result).anyTimes();
expect(result.isValid()).andReturn(true).anyTimes();
replay(viewDAO,viewInstanceDAO,securityHelper,handlerList,validator,result);
registry.addDefinition(viewEntity);
registry.installViewInstance(viewInstanceEntity);
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(1,viewInstanceDefinitions.size());
ViewInstanceEntity instanceEntity=viewInstanceDefinitions.iterator().next();
Assert.assertEquals("v2-1",instanceEntity.getProperty("p2").getValue());
Assert.assertEquals(viewInstanceEntity,viewInstanceDefinitions.iterator().next());
verify(viewDAO,viewInstanceDAO,securityHelper,handlerList,validator,result);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSetViewInstanceProperties() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
Map instanceProperties=new HashMap();
instanceProperties.put("p1","newV1");
instanceProperties.put("p2","newV2");
registry.setViewInstanceProperties(viewInstanceEntity,instanceProperties,viewEntity.getConfiguration(),viewEntity.getClassLoader());
Assert.assertEquals("newV1",viewInstanceEntity.getProperty("p1").getValue());
Assert.assertEquals("bmV3VjI=",viewInstanceEntity.getProperty("p2").getValue());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testInstallViewInstance() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
ViewConfig config=ViewConfigTest.getConfig(XML_VALID_INSTANCE);
ViewEntity viewEntity=getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewInstanceEntity viewInstanceEntity=getViewInstanceEntity(viewEntity,config.getInstances().get(0));
expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
handlerList.addViewInstance(viewInstanceEntity);
replay(viewDAO,viewInstanceDAO,resourceTypeDAO,securityHelper,handlerList);
registry.addDefinition(viewEntity);
registry.installViewInstance(viewInstanceEntity);
Collection viewInstanceDefinitions=registry.getInstanceDefinitions(viewEntity);
Assert.assertEquals(1,viewInstanceDefinitions.size());
ViewInstanceEntity instanceEntity=viewInstanceDefinitions.iterator().next();
Assert.assertEquals("v2-1",instanceEntity.getProperty("p2").getValue());
Assert.assertEquals(viewInstanceEntity,viewInstanceDefinitions.iterator().next());
Assert.assertEquals("MY_VIEW{1.0.0}",viewInstanceEntity.getResource().getResourceType().getName());
verify(viewDAO,viewInstanceDAO,resourceTypeDAO,securityHelper,handlerList);
}
InternalCallVerifier NullVerifier
@Test public void testRemoveInstanceData() throws Exception {
ViewRegistry registry=ViewRegistry.getInstance();
ViewInstanceEntity viewInstanceEntity=ViewInstanceEntityTest.getViewInstanceEntity();
viewInstanceEntity.putInstanceData("foo","value");
ViewInstanceDataEntity dataEntity=viewInstanceEntity.getInstanceData("foo");
viewInstanceDAO.removeData(dataEntity);
expect(viewInstanceDAO.merge(viewInstanceEntity)).andReturn(viewInstanceEntity);
replay(viewDAO,viewInstanceDAO,securityHelper);
registry.removeInstanceData(viewInstanceEntity,"foo");
Assert.assertNull(viewInstanceEntity.getInstanceData("foo"));
verify(viewDAO,viewInstanceDAO,securityHelper);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResourceProviders() throws Exception {
ViewConfig config=ViewConfigTest.getConfig();
ViewEntity viewDefinition=ViewEntityTest.getViewEntity();
ViewRegistry registry=ViewRegistry.getInstance();
viewDefinition.setConfiguration(config);
registry.setupViewDefinition(viewDefinition,getClass().getClassLoader());
Map providerMap=registry.getResourceProviders();
Assert.assertEquals(3,providerMap.size());
Assert.assertTrue(providerMap.containsKey(Resource.Type.valueOf("MY_VIEW{1.0.0}/resource")));
Assert.assertTrue(providerMap.containsKey(Resource.Type.valueOf("MY_VIEW{1.0.0}/subresource")));
Assert.assertTrue(providerMap.containsKey(Resource.Type.valueOf("MY_VIEW{1.0.0}/resources")));
}
Class: org.apache.ambari.server.view.ViewSubResourceDefinitionTest InternalCallVerifier EqualityVerifier
@Test public void testGetSubResourceDefinitions() throws Exception {
ViewSubResourceDefinition viewSubResourceDefinition=getViewSubResourceDefinition();
new Resource.Type("MY_VIEW{1.0.0}/resource");
new Resource.Type("MY_VIEW{1.0.0}/subresource");
Set subResourceDefinitions=viewSubResourceDefinition.getSubResourceDefinitions();
Assert.assertEquals(1,subResourceDefinitions.size());
Assert.assertEquals("MY_VIEW{1.0.0}/subresource",subResourceDefinitions.iterator().next().getType().name());
}
Class: org.apache.ambari.server.view.ViewSubResourceProviderTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetResources_temporal() throws Exception {
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
ViewConfig config=ViewConfigTest.getConfig(xml);
ViewEntity viewEntity=ViewRegistryTest.getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewRegistryTest.getViewInstanceEntity(viewEntity,config.getInstances().get(0));
Map resourceDefinitions=viewEntity.getResourceDefinitions();
Assert.assertEquals(1,resourceDefinitions.size());
Resource.Type type=resourceDefinitions.keySet().iterator().next();
ViewSubResourceProvider viewSubResourceProvider=new ViewSubResourceProvider(type,MyResource.class,"id",viewEntity);
Set requestProperties=new HashSet();
requestProperties.add("metrics/myMetric");
Map temporalInfoMap=new HashMap();
TemporalInfo temporalInfo=new TemporalInfoImpl(1000L,1100L,10L);
temporalInfoMap.put("metrics/myMetric",temporalInfo);
Request request=PropertyHelper.getReadRequest(requestProperties,temporalInfoMap);
Predicate predicate=new AlwaysPredicate();
Set resources=viewSubResourceProvider.getResources(request,predicate);
Assert.assertEquals(2,resources.size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
Properties properties=new Properties();
properties.put("p1","v1");
Configuration ambariConfig=new Configuration(properties);
ViewConfig config=ViewConfigTest.getConfig(xml);
ViewEntity viewEntity=ViewRegistryTest.getViewEntity(config,ambariConfig,getClass().getClassLoader(),"");
ViewRegistryTest.getViewInstanceEntity(viewEntity,config.getInstances().get(0));
Map resourceDefinitions=viewEntity.getResourceDefinitions();
Assert.assertEquals(1,resourceDefinitions.size());
Resource.Type type=resourceDefinitions.keySet().iterator().next();
ViewSubResourceProvider viewSubResourceProvider=new ViewSubResourceProvider(type,MyResource.class,"id",viewEntity);
Request request=PropertyHelper.getReadRequest("id","properties","metrics/myMetric");
Predicate predicate=new AlwaysPredicate();
Set resources=viewSubResourceProvider.getResources(request,predicate);
Assert.assertEquals(2,resources.size());
predicate=new PredicateBuilder().property("metrics/myMetric").greaterThan(1).toPredicate();
resources=viewSubResourceProvider.getResources(request,predicate);
Assert.assertEquals(1,resources.size());
Assert.assertTrue(((Integer)resources.iterator().next().getPropertyValue("metrics/myMetric")) > 1);
}
Class: org.apache.ambari.server.view.ViewURLStreamProviderTest InternalCallVerifier EqualityVerifier
@Test public void testReadFromNullBody() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec"),eq("requestMethod"),aryEq((byte[])null),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection,inputStream);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readFrom("spec","requestMethod",(String)null,headers));
verify(streamProvider,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetConnection() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
replay(streamProvider,urlConnection);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(urlConnection,viewURLStreamProvider.getConnection("spec","requestMethod","params",headers));
verify(streamProvider,urlConnection);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetConnectionAs() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
replay(streamProvider,urlConnection);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(urlConnection,viewURLStreamProvider.getConnectionAs("spec","requestMethod","params",headers,"joe"));
verify(streamProvider,urlConnection);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadFromNullInputStreamBody() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec"),eq("requestMethod"),aryEq((byte[])null),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection,inputStream);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readFrom("spec","requestMethod",(InputStream)null,headers));
verify(streamProvider,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetConnectionCurrent() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(viewContext.getUsername()).andReturn("joe").anyTimes();
replay(streamProvider,urlConnection,viewContext);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(urlConnection,viewURLStreamProvider.getConnectionAsCurrent("spec","requestMethod","params",headers));
verify(streamProvider,urlConnection,viewContext);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadAs() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection,inputStream);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readAs("spec","requestMethod","params",headers,"joe"));
verify(streamProvider,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadAsCurrentInputStream() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
InputStream body=new ByteArrayInputStream("params".getBytes());
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
expect(viewContext.getUsername()).andReturn("joe").anyTimes();
replay(streamProvider,urlConnection,inputStream,viewContext);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readAsCurrent("spec","requestMethod",body,headers));
verify(streamProvider,urlConnection,inputStream,viewContext);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadAsInputStream() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
InputStream body=new ByteArrayInputStream("params".getBytes());
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection,inputStream);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readAs("spec","requestMethod",body,headers,"joe"));
verify(streamProvider,urlConnection,inputStream);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadFromInputStream() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
InputStream body=new ByteArrayInputStream("params".getBytes());
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection,inputStream);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readFrom("spec","requestMethod",body,headers));
verify(streamProvider,urlConnection,inputStream);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testProxyRestriction() throws Exception {
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(null,null);
Properties ambariProperties=new Properties();
Configuration configuration=new Configuration(ambariProperties);
Assert.assertEquals(Configuration.PROXY_ALLOWED_HOST_PORTS_DEFAULT,configuration.getConfigsMap().get(Configuration.PROXY_ALLOWED_HOST_PORTS));
ViewURLStreamProvider.HostPortRestrictionHandler hprh=viewURLStreamProvider.new HostPortRestrictionHandler(configuration.getProperty(Configuration.PROXY_ALLOWED_HOST_PORTS));
Assert.assertFalse(hprh.proxyCallRestricted());
Assert.assertTrue(hprh.allowProxy("host1.com",null));
Assert.assertTrue(hprh.allowProxy(null,null));
Assert.assertTrue(hprh.allowProxy("host1.com"," "));
Assert.assertTrue(hprh.allowProxy("host1.com "," "));
Assert.assertTrue(hprh.allowProxy(" host1.com ","8080"));
ambariProperties=new Properties();
ambariProperties.setProperty(Configuration.PROXY_ALLOWED_HOST_PORTS,"");
configuration=new Configuration(ambariProperties);
hprh=viewURLStreamProvider.new HostPortRestrictionHandler(configuration.getProperty(Configuration.PROXY_ALLOWED_HOST_PORTS));
Assert.assertFalse(hprh.proxyCallRestricted());
Assert.assertTrue(hprh.allowProxy("host1.com",null));
Assert.assertTrue(hprh.allowProxy(null,null));
Assert.assertTrue(hprh.allowProxy("host1.com"," "));
Assert.assertTrue(hprh.allowProxy("host1.com "," "));
Assert.assertTrue(hprh.allowProxy(" host1.com ","8080"));
ambariProperties=new Properties();
ambariProperties.setProperty(Configuration.PROXY_ALLOWED_HOST_PORTS,"host1.com:*");
configuration=new Configuration(ambariProperties);
hprh=viewURLStreamProvider.new HostPortRestrictionHandler(configuration.getProperty(Configuration.PROXY_ALLOWED_HOST_PORTS));
Assert.assertTrue(hprh.proxyCallRestricted());
Assert.assertTrue(hprh.allowProxy("host1.com",null));
Assert.assertTrue(hprh.allowProxy(null,null));
Assert.assertTrue(hprh.allowProxy("host1.com","20"));
Assert.assertFalse(hprh.allowProxy("host2.com "," "));
Assert.assertFalse(hprh.allowProxy(" host2.com ","8080"));
ambariProperties=new Properties();
ambariProperties.setProperty(Configuration.PROXY_ALLOWED_HOST_PORTS," host1.com:80 ,host2.org:443, host2.org:22");
configuration=new Configuration(ambariProperties);
hprh=viewURLStreamProvider.new HostPortRestrictionHandler(configuration.getProperty(Configuration.PROXY_ALLOWED_HOST_PORTS));
Assert.assertTrue(hprh.proxyCallRestricted());
Assert.assertTrue(hprh.allowProxy("host1.com","80"));
Assert.assertFalse(hprh.allowProxy("host1.com","20"));
Assert.assertFalse(hprh.allowProxy("host2.org","404"));
Assert.assertFalse(hprh.allowProxy("host2.com","22"));
ViewContext viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getAmbariProperty(anyObject(String.class))).andReturn(" host1.com:80 ,host2.org:443, host2.org:22");
replay(viewContext);
viewURLStreamProvider=new ViewURLStreamProvider(viewContext,null);
Assert.assertTrue(viewURLStreamProvider.isProxyCallAllowed("http://host1.com/tt"));
Assert.assertTrue(viewURLStreamProvider.isProxyCallAllowed("https://host2.org/tt"));
Assert.assertFalse(viewURLStreamProvider.isProxyCallAllowed("https://host2.org:444/tt"));
viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getAmbariProperty(anyObject(String.class))).andReturn("c6401.ambari.apache.org:8088");
replay(viewContext);
viewURLStreamProvider=new ViewURLStreamProvider(viewContext,null);
Assert.assertTrue(viewURLStreamProvider.isProxyCallAllowed("http://c6401.ambari.apache.org:8088/ws/v1/cluster/get-node-labels"));
viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getAmbariProperty(anyObject(String.class))).andReturn("*:8088");
replay(viewContext);
viewURLStreamProvider=new ViewURLStreamProvider(viewContext,null);
Assert.assertFalse(viewURLStreamProvider.isProxyCallAllowed("http://c6401.ambari.apache.org:8088/ws/v1/cluster/get-node-labels"));
viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getAmbariProperty(anyObject(String.class))).andReturn("c6401.ambari.apache.org:*");
replay(viewContext);
viewURLStreamProvider=new ViewURLStreamProvider(viewContext,null);
Assert.assertTrue(viewURLStreamProvider.isProxyCallAllowed("http://c6401.ambari.apache.org:8088/ws/v1/cluster/get-node-labels"));
viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getAmbariProperty(anyObject(String.class))).andReturn("c6401.ambari.apache.org:80,c6401.ambari.apache.org:443");
replay(viewContext);
viewURLStreamProvider=new ViewURLStreamProvider(viewContext,null);
Assert.assertTrue(viewURLStreamProvider.isProxyCallAllowed("http://c6401.ambari.apache.org/ws/v1/cluster/get-node-labels"));
Assert.assertTrue(viewURLStreamProvider.isProxyCallAllowed("https://c6401.ambari.apache.org/ws/v1/cluster/get-node-labels"));
}
InternalCallVerifier EqualityVerifier
@Test public void testReadAsCurrent() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec?doAs=joe"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
expect(viewContext.getUsername()).andReturn("joe").anyTimes();
replay(streamProvider,urlConnection,inputStream,viewContext);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readAsCurrent("spec","requestMethod","params",headers));
verify(streamProvider,urlConnection,inputStream,viewContext);
}
InternalCallVerifier EqualityVerifier
@Test public void testReadFrom() throws Exception {
URLStreamProvider streamProvider=createNiceMock(URLStreamProvider.class);
HttpURLConnection urlConnection=createNiceMock(HttpURLConnection.class);
InputStream inputStream=createNiceMock(InputStream.class);
ViewContext viewContext=createNiceMock(ViewContext.class);
Map headers=new HashMap();
headers.put("header","headerValue");
Map> headerMap=new HashMap>();
headerMap.put("header",Collections.singletonList("headerValue"));
expect(streamProvider.processURL(eq("spec"),eq("requestMethod"),aryEq("params".getBytes()),eq(headerMap))).andReturn(urlConnection);
expect(urlConnection.getInputStream()).andReturn(inputStream);
replay(streamProvider,urlConnection,inputStream);
ViewURLStreamProvider viewURLStreamProvider=new ViewURLStreamProvider(viewContext,streamProvider);
Assert.assertEquals(inputStream,viewURLStreamProvider.readFrom("spec","requestMethod","params",headers));
verify(streamProvider,urlConnection,inputStream);
}
Class: org.apache.ambari.server.view.configuration.AutoInstanceConfigTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetServices() throws Exception {
AutoInstanceConfig config=getAutoInstanceConfigs(VIEW_XML);
List serviceNames=config.getServices();
assertEquals(2,serviceNames.size());
assertTrue(serviceNames.contains("HIVE"));
assertTrue(serviceNames.contains("HDFS"));
}
Class: org.apache.ambari.server.view.configuration.PersistenceConfigTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetEntities() throws Exception {
ViewConfig config=ViewConfigTest.getConfig(xml);
PersistenceConfig persistenceConfig=config.getPersistence();
Assert.assertEquals(2,persistenceConfig.getEntities().size());
config=ViewConfigTest.getConfig(xml_no_entities);
persistenceConfig=config.getPersistence();
Assert.assertTrue(persistenceConfig.getEntities().isEmpty());
config=ViewConfigTest.getConfig(xml_no_persistence);
persistenceConfig=config.getPersistence();
Assert.assertTrue(persistenceConfig.getEntities().isEmpty());
}
Class: org.apache.ambari.server.view.configuration.PropertyConfigTest BranchVerifier InternalCallVerifier BooleanVerifier
@Test public void testGetValue() throws Exception {
List instanceConfigs=InstanceConfigTest.getInstanceConfigs();
for ( InstanceConfig instanceConfig : instanceConfigs) {
List propertyConfigs=instanceConfig.getProperties();
Assert.assertTrue(propertyConfigs.size() <= 2);
Assert.assertTrue(propertyConfigs.get(0).getValue().startsWith("v1-"));
if (propertyConfigs.size() == 2) {
Assert.assertTrue(propertyConfigs.get(1).getValue().startsWith("v2-"));
}
}
}
BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetKey() throws Exception {
List instanceConfigs=InstanceConfigTest.getInstanceConfigs();
for ( InstanceConfig instanceConfig : instanceConfigs) {
List propertyConfigs=instanceConfig.getProperties();
Assert.assertTrue(propertyConfigs.size() <= 2);
Assert.assertEquals("p1",propertyConfigs.get(0).getKey());
if (propertyConfigs.size() == 2) {
Assert.assertEquals("p2",propertyConfigs.get(1).getKey());
}
}
}
Class: org.apache.ambari.server.view.configuration.ViewConfigTest APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetResources() throws Exception {
ViewConfig config=getConfig();
List resources=config.getResources();
Assert.assertEquals(2,resources.size());
Assert.assertEquals("resource",resources.get(0).getName());
Assert.assertEquals("subresource",resources.get(1).getName());
config=getConfig(minimal_xml);
resources=config.getResources();
Assert.assertNotNull(resources);
Assert.assertEquals(0,resources.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetInstances() throws Exception {
ViewConfig config=getConfig(xml);
List instances=config.getInstances();
Assert.assertEquals(2,instances.size());
Assert.assertEquals("INSTANCE1",instances.get(0).getName());
Assert.assertEquals("INSTANCE2",instances.get(1).getName());
config=getConfig(minimal_xml);
instances=config.getInstances();
Assert.assertNotNull(instances);
Assert.assertEquals(0,instances.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetParameters() throws Exception {
ViewConfig config=getConfig();
List parameters=config.getParameters();
Assert.assertEquals(2,parameters.size());
Assert.assertEquals("p1",parameters.get(0).getName());
Assert.assertEquals("p2",parameters.get(1).getName());
config=getConfig(minimal_xml);
parameters=config.getParameters();
Assert.assertNotNull(parameters);
Assert.assertEquals(0,parameters.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetAutoInstance() throws Exception {
ViewConfig config=getConfig(xml);
AutoInstanceConfig instance=config.getAutoInstance();
Assert.assertEquals("AUTO-INSTANCE",instance.getName());
}
Class: org.apache.ambari.server.view.events.EventImplTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testGetViewSubject() throws Exception {
EventImpl event=getEvent("MyEvent",Collections.emptyMap(),view_xml);
Assert.assertEquals("MY_VIEW",event.getViewSubject().getViewName());
Assert.assertEquals("My View!",event.getViewSubject().getLabel());
Assert.assertEquals("1.0.0",event.getViewSubject().getVersion());
}
Class: org.apache.ambari.server.view.persistence.DataStoreImplTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testFindAll_multiple() throws Exception {
DynamicClassLoader classLoader=new DynamicClassLoader(DataStoreImplTest.class.getClassLoader());
EntityManagerFactory entityManagerFactory=createMock(EntityManagerFactory.class);
EntityManager entityManager=createMock(EntityManager.class);
JPADynamicHelper jpaDynamicHelper=createNiceMock(JPADynamicHelper.class);
SchemaManager schemaManager=createNiceMock(SchemaManager.class);
DynamicEntity dynamicEntity1=createMock(DynamicEntity.class);
DynamicEntity dynamicEntity2=createMock(DynamicEntity.class);
DynamicEntity dynamicEntity3=createMock(DynamicEntity.class);
Query query=createMock(Query.class);
Capture typeCapture=new Capture();
Capture typeCapture2=new Capture();
jpaDynamicHelper.addTypes(eq(true),eq(true),capture(typeCapture),capture(typeCapture2));
expect(entityManagerFactory.createEntityManager()).andReturn(entityManager);
expect(entityManager.createQuery("SELECT e FROM DS_DataStoreImplTest$TestEntity_1 e WHERE e.DS_name='foo'")).andReturn(query);
entityManager.close();
List entityList=new LinkedList();
entityList.add(dynamicEntity1);
entityList.add(dynamicEntity2);
entityList.add(dynamicEntity3);
expect(query.getResultList()).andReturn(entityList);
expect(dynamicEntity1.get("DS_id")).andReturn(99);
expect(dynamicEntity1.get("DS_name")).andReturn("foo");
TestSubEntity subEntity1=new TestSubEntity("bar");
expect(dynamicEntity1.get("DS_subEntity")).andReturn(subEntity1);
expect(dynamicEntity2.get("DS_id")).andReturn(100);
expect(dynamicEntity2.get("DS_name")).andReturn("foo");
TestSubEntity subEntity2=new TestSubEntity("bar");
expect(dynamicEntity2.get("DS_subEntity")).andReturn(subEntity2);
expect(dynamicEntity3.get("DS_id")).andReturn(101);
expect(dynamicEntity3.get("DS_name")).andReturn("foo");
TestSubEntity subEntity3=new TestSubEntity("bar");
expect(dynamicEntity3.get("DS_subEntity")).andReturn(subEntity3);
replay(entityManagerFactory,entityManager,jpaDynamicHelper,dynamicEntity1,dynamicEntity2,dynamicEntity3,query,schemaManager);
DataStoreImpl dataStore=getDataStore(entityManagerFactory,jpaDynamicHelper,classLoader,schemaManager);
Collection entities=dataStore.findAll(TestEntity.class,"name='foo'");
Assert.assertEquals(3,entities.size());
for ( TestEntity entity : entities) {
Assert.assertEquals("foo",entity.getName());
}
verify(entityManagerFactory,entityManager,jpaDynamicHelper,dynamicEntity1,dynamicEntity2,dynamicEntity3,query,schemaManager);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testFind() throws Exception {
DynamicClassLoader classLoader=new DynamicClassLoader(DataStoreImplTest.class.getClassLoader());
EntityManagerFactory entityManagerFactory=createMock(EntityManagerFactory.class);
EntityManager entityManager=createMock(EntityManager.class);
JPADynamicHelper jpaDynamicHelper=createNiceMock(JPADynamicHelper.class);
SchemaManager schemaManager=createNiceMock(SchemaManager.class);
DynamicEntity dynamicEntity=createMock(DynamicEntity.class);
Capture typeCapture=new Capture();
Capture typeCapture2=new Capture();
jpaDynamicHelper.addTypes(eq(true),eq(true),capture(typeCapture),capture(typeCapture2));
expect(entityManagerFactory.createEntityManager()).andReturn(entityManager);
Capture entityClassCapture=new Capture();
expect(entityManager.find(capture(entityClassCapture),eq(99))).andReturn(dynamicEntity);
entityManager.close();
expect(dynamicEntity.get("DS_id")).andReturn(99);
expect(dynamicEntity.get("DS_name")).andReturn("foo");
TestSubEntity subEntity=new TestSubEntity("bar");
expect(dynamicEntity.get("DS_subEntity")).andReturn(subEntity);
replay(entityManagerFactory,entityManager,jpaDynamicHelper,dynamicEntity,schemaManager);
DataStoreImpl dataStore=getDataStore(entityManagerFactory,jpaDynamicHelper,classLoader,schemaManager);
TestEntity entity=dataStore.find(TestEntity.class,99);
Assert.assertEquals(entityClassCapture.getValue(),typeCapture2.getValue().getJavaClass());
Assert.assertEquals(99,entity.getId());
Assert.assertEquals("foo",entity.getName());
verify(entityManagerFactory,entityManager,jpaDynamicHelper,dynamicEntity,schemaManager);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testFindAll() throws Exception {
DynamicClassLoader classLoader=new DynamicClassLoader(DataStoreImplTest.class.getClassLoader());
EntityManagerFactory entityManagerFactory=createMock(EntityManagerFactory.class);
EntityManager entityManager=createMock(EntityManager.class);
JPADynamicHelper jpaDynamicHelper=createNiceMock(JPADynamicHelper.class);
SchemaManager schemaManager=createNiceMock(SchemaManager.class);
DynamicEntity dynamicEntity=createMock(DynamicEntity.class);
Query query=createMock(Query.class);
Capture typeCapture=new Capture();
Capture typeCapture2=new Capture();
jpaDynamicHelper.addTypes(eq(true),eq(true),capture(typeCapture),capture(typeCapture2));
expect(entityManagerFactory.createEntityManager()).andReturn(entityManager);
expect(entityManager.createQuery("SELECT e FROM DS_DataStoreImplTest$TestEntity_1 e WHERE e.DS_id=99")).andReturn(query);
entityManager.close();
expect(query.getResultList()).andReturn(Collections.singletonList(dynamicEntity));
expect(dynamicEntity.get("DS_id")).andReturn(99);
expect(dynamicEntity.get("DS_name")).andReturn("foo");
TestSubEntity subEntity=new TestSubEntity("bar");
expect(dynamicEntity.get("DS_subEntity")).andReturn(subEntity);
replay(entityManagerFactory,entityManager,jpaDynamicHelper,dynamicEntity,query,schemaManager);
DataStoreImpl dataStore=getDataStore(entityManagerFactory,jpaDynamicHelper,classLoader,schemaManager);
Collection entities=dataStore.findAll(TestEntity.class,"id=99");
Assert.assertEquals(1,entities.size());
TestEntity entity=entities.iterator().next();
Assert.assertEquals(99,entity.getId());
Assert.assertEquals("foo",entity.getName());
verify(entityManagerFactory,entityManager,jpaDynamicHelper,dynamicEntity,query,schemaManager);
}
InternalCallVerifier EqualityVerifier
@Test public void testStore_create() throws Exception {
DynamicClassLoader classLoader=new DynamicClassLoader(DataStoreImplTest.class.getClassLoader());
EntityManagerFactory entityManagerFactory=createMock(EntityManagerFactory.class);
EntityManager entityManager=createMock(EntityManager.class);
JPADynamicHelper jpaDynamicHelper=createNiceMock(JPADynamicHelper.class);
SchemaManager schemaManager=createNiceMock(SchemaManager.class);
EntityTransaction transaction=createMock(EntityTransaction.class);
Capture typeCapture=new Capture();
Capture typeCapture2=new Capture();
jpaDynamicHelper.addTypes(eq(true),eq(true),capture(typeCapture),capture(typeCapture2));
expect(entityManagerFactory.createEntityManager()).andReturn(entityManager);
expect(entityManager.getTransaction()).andReturn(transaction).anyTimes();
Capture entityClassCapture=new Capture();
expect(entityManager.find(capture(entityClassCapture),eq("bar"))).andReturn(null);
Capture entityClassCapture2=new Capture();
expect(entityManager.find(capture(entityClassCapture2),eq(99))).andReturn(null);
Capture entityCapture=new Capture();
entityManager.persist(capture(entityCapture));
Capture entityCapture2=new Capture();
entityManager.persist(capture(entityCapture2));
entityManager.close();
transaction.begin();
transaction.commit();
replay(entityManagerFactory,entityManager,jpaDynamicHelper,transaction,schemaManager);
DataStoreImpl dataStore=getDataStore(entityManagerFactory,jpaDynamicHelper,classLoader,schemaManager);
dataStore.store(new TestEntity(99,"foo",new TestSubEntity("bar")));
Assert.assertEquals(entityClassCapture.getValue(),typeCapture.getValue().getJavaClass());
Assert.assertEquals(entityClassCapture2.getValue(),typeCapture2.getValue().getJavaClass());
Assert.assertEquals("bar",entityCapture.getValue().get("DS_name"));
Assert.assertEquals(99,entityCapture2.getValue().get("DS_id"));
Assert.assertEquals("foo",entityCapture2.getValue().get("DS_name"));
verify(entityManagerFactory,entityManager,jpaDynamicHelper,transaction,schemaManager);
}
Class: org.apache.ambari.server.view.validation.InstanceValidationResultImplTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetPropertyResults() throws Exception {
ValidationResult result=new ValidationResultImpl(true,"detail");
Map propertyResults=new HashMap();
propertyResults.put("foo",new ValidationResultImpl(true,"foo detail"));
propertyResults.put("bar",new ValidationResultImpl(false,"bar detail"));
InstanceValidationResultImpl instanceValidationResult=new InstanceValidationResultImpl(result,propertyResults);
propertyResults=instanceValidationResult.getPropertyResults();
Assert.assertEquals(2,propertyResults.size());
Assert.assertTrue(propertyResults.containsKey("foo"));
Assert.assertTrue(propertyResults.containsKey("bar"));
Assert.assertTrue(propertyResults.get("foo").isValid());
Assert.assertFalse(propertyResults.get("bar").isValid());
}
Class: org.apache.ambari.server.view.validation.ValidationResultImplTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testCreate() throws Exception {
ValidationResult result=ValidationResultImpl.create(new ValidationResultImpl(true,"is true"));
Assert.assertTrue(result.isValid());
Assert.assertEquals("is true",result.getDetail());
result=ValidationResultImpl.create(new ValidationResultImpl(false,"is false"));
Assert.assertFalse(result.isValid());
Assert.assertEquals("is false",result.getDetail());
}
Class: org.apache.ambari.shell.commands.BlueprintCommandsTest InternalCallVerifier EqualityVerifier
@Test public void testAddBlueprintDefaultsForException() throws HttpResponseException {
doThrow(responseException).when(ambariClient).addDefaultBlueprints();
when(responseException.getMessage()).thenReturn("error");
String result=blueprintCommands.addBlueprint();
verify(responseException).getMessage();
assertEquals("Failed to add the default blueprints: error",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddBlueprintDefaultsForConnectionRefused() throws HttpResponseException {
doThrow(new RuntimeException("Connection refused")).when(ambariClient).addDefaultBlueprints();
when(responseException.getMessage()).thenReturn("error");
String result=blueprintCommands.addBlueprint();
assertEquals("Failed to add the default blueprints: Connection refused",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddBlueprintForDefaults() throws HttpResponseException {
String result=blueprintCommands.addBlueprint();
verify(ambariClient).addDefaultBlueprints();
assertEquals("Default blueprints added",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddBlueprintForException() throws IOException {
File file=new File("src/test/resources/testBlueprint.json");
String json=IOUtils.toString(new FileInputStream(file));
doThrow(responseException).when(ambariClient).addBlueprint(json);
when(responseException.getMessage()).thenReturn("error");
String result=blueprintCommands.addBlueprint("url",file);
verify(ambariClient).addBlueprint(json);
verify(responseException).getMessage();
assertEquals("Cannot add blueprint: error",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddBlueprintForUnspecifiedValue() throws HttpResponseException {
String response=blueprintCommands.addBlueprint(null,null);
assertEquals("No blueprint specified",response);
verify(ambariClient,times(0)).addBlueprint(null);
}
InternalCallVerifier EqualityVerifier
@Test public void testAddBlueprintForFileReadPrecedence() throws IOException {
File file=new File("src/test/resources/testBlueprint.json");
String json=IOUtils.toString(new FileInputStream(file));
JsonNode jsonNode=mock(JsonNode.class);
when(objectMapper.readTree(json.getBytes())).thenReturn(jsonNode);
when(jsonNode.get("Blueprints")).thenReturn(jsonNode);
when(jsonNode.get("blueprint_name")).thenReturn(jsonNode);
when(jsonNode.asText()).thenReturn("blueprintName");
String result=blueprintCommands.addBlueprint("url",file);
verify(ambariClient).addBlueprint(json);
verify(context).setHint(Hints.BUILD_CLUSTER);
verify(context).setBlueprintsAvailable(true);
assertEquals("Blueprint: 'blueprintName' has been added",result);
}
Class: org.apache.ambari.shell.commands.ClusterCommandsTest InternalCallVerifier EqualityVerifier
@Test public void testAssignForInvalidHostGroup(){
Map> map=singletonMap("group1",asList("host","host2"));
ReflectionTestUtils.setField(clusterCommands,"hostGroups",map);
when(client.getHostNames()).thenReturn(singletonMap("host3","HEALTHY"));
String result=clusterCommands.assign(new Host("host3"),"group0");
assertEquals("group0 is not a valid host group",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testDeleteCluster() throws HttpResponseException {
when(context.getCluster()).thenReturn("cluster");
when(responseException.getMessage()).thenReturn("msg");
String result=clusterCommands.deleteCluster();
verify(client).deleteCluster("cluster");
verify(context).getCluster();
assertEquals("Successfully deleted the cluster",result);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterPreviewCommandAvailable(){
when(context.isFocusOnClusterBuild()).thenReturn(true);
ReflectionTestUtils.setField(clusterCommands,"hostGroups",singletonMap("group1",asList("host1")));
boolean result=clusterCommands.isClusterPreviewCommandAvailable();
assertTrue(result);
}
InternalCallVerifier BooleanVerifier
@Test public void testCreateCluster() throws HttpResponseException {
String blueprint="blueprint";
Map> map=singletonMap("group1",asList("host","host2"));
ReflectionTestUtils.setField(clusterCommands,"hostGroups",map);
when(context.getFocusValue()).thenReturn(blueprint);
when(client.getClusterName()).thenReturn("cluster");
String result=clusterCommands.createCluster(false);
verify(client).createCluster(blueprint,blueprint,map);
verify(context).resetFocus();
assertFalse(result.contains("Failed"));
assertTrue(result.contains("Successfully"));
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterBuildCommandAvailableAndFocusOnBuild(){
when(context.isConnectedToCluster()).thenReturn(false);
when(context.isFocusOnClusterBuild()).thenReturn(true);
when(context.areBlueprintsAvailable()).thenReturn(true);
boolean result=clusterCommands.isClusterBuildCommandAvailable();
assertFalse(result);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testAutoAssignForEmptyResult() throws InvalidHostGroupHostAssociation {
Map> hostGroups=singletonMap("group1",asList("host1"));
ReflectionTestUtils.setField(clusterCommands,"hostGroups",hostGroups);
when(context.getFocusValue()).thenReturn("blueprint");
when(client.recommendAssignments("blueprint")).thenReturn(new HashMap>());
clusterCommands.autoAssign();
Map> result=(Map>)ReflectionTestUtils.getField(clusterCommands,"hostGroups");
assertEquals(hostGroups,result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAssignForValidHostGroup(){
Map> map=new HashMap>();
map.put("group1",new ArrayList());
ReflectionTestUtils.setField(clusterCommands,"hostGroups",map);
when(client.getHostNames()).thenReturn(singletonMap("host3","HEALTHY"));
String result=clusterCommands.assign(new Host("host3"),"group1");
assertEquals("host3 has been added to group1",result);
}
InternalCallVerifier BooleanVerifier
@Test public void testCreateClusterForException() throws HttpResponseException {
String blueprint="blueprint";
Map> map=singletonMap("group1",asList("host","host2"));
ReflectionTestUtils.setField(clusterCommands,"hostGroups",map);
when(context.getFocusValue()).thenReturn(blueprint);
doThrow(responseException).when(client).createCluster(blueprint,blueprint,map);
doThrow(responseException).when(client).deleteCluster(blueprint);
String result=clusterCommands.createCluster(false);
verify(client).createCluster(blueprint,blueprint,map);
verify(client).getHostGroups(blueprint);
verify(client).deleteCluster(blueprint);
assertTrue(result.contains("Failed"));
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterBuildCommandAvailableAndNoBlueprints(){
when(context.isConnectedToCluster()).thenReturn(false);
when(context.isFocusOnClusterBuild()).thenReturn(false);
when(context.areBlueprintsAvailable()).thenReturn(false);
boolean result=clusterCommands.isClusterBuildCommandAvailable();
assertFalse(result);
}
InternalCallVerifier EqualityVerifier
@Test public void testDeleteClusterForException() throws HttpResponseException {
when(context.getCluster()).thenReturn("cluster");
when(responseException.getMessage()).thenReturn("msg");
doThrow(responseException).when(client).deleteCluster("cluster");
String result=clusterCommands.deleteCluster();
verify(client).deleteCluster("cluster");
verify(context).getCluster();
verify(responseException).getMessage();
assertEquals("Could not delete the cluster: msg",result);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testAutoAssign() throws InvalidHostGroupHostAssociation {
Map> hostGroups=singletonMap("group1",asList("host1"));
Map> newAssignments=singletonMap("group1",asList("host1"));
ReflectionTestUtils.setField(clusterCommands,"hostGroups",hostGroups);
when(context.getFocusValue()).thenReturn("blueprint");
when(client.recommendAssignments("blueprint")).thenReturn(newAssignments);
clusterCommands.autoAssign();
Map> result=(Map>)ReflectionTestUtils.getField(clusterCommands,"hostGroups");
assertEquals(newAssignments,result);
verify(context).setHint(Hints.CREATE_CLUSTER);
}
InternalCallVerifier EqualityVerifier
@Test public void testBuildCluster(){
Map hostNames=singletonMap("host1","HEALTHY");
Map> map=singletonMap("group1",asList("comp1","comp2"));
when(client.doesBlueprintExist("id")).thenReturn(true);
when(client.getBlueprintMap("id")).thenReturn(map);
when(context.getFocusValue()).thenReturn("id");
when(client.getHostNames()).thenReturn(hostNames);
String result=clusterCommands.buildCluster(new Blueprint("id"));
verify(client).doesBlueprintExist("id");
verify(client).getBlueprintMap("id");
verify(client).getHostGroups("id");
assertEquals(String.format("%s\n%s",renderSingleMap(hostNames,"HOSTNAME","STATE"),renderMultiValueMap(map,"HOSTGROUP","COMPONENT")),result);
}
InternalCallVerifier EqualityVerifier
@Test public void testBuildClusterForNonExistingBlueprint(){
when(client.doesBlueprintExist("id")).thenReturn(false);
String result=clusterCommands.buildCluster(new Blueprint("id"));
verify(client).doesBlueprintExist("id");
assertEquals("Not a valid blueprint id",result);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterBuildCommandAvailable(){
when(context.isConnectedToCluster()).thenReturn(false);
when(context.isFocusOnClusterBuild()).thenReturn(false);
when(context.areBlueprintsAvailable()).thenReturn(true);
boolean result=clusterCommands.isClusterBuildCommandAvailable();
assertTrue(result);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterResetCommandAvailable(){
when(context.isFocusOnClusterBuild()).thenReturn(true);
ReflectionTestUtils.setField(clusterCommands,"hostGroups",singletonMap("group1",asList("host1")));
boolean result=clusterCommands.isClusterResetCommandAvailable();
assertTrue(result);
}
InternalCallVerifier EqualityVerifier
@Test public void testAssignForInvalidHost(){
Map> map=new HashMap>();
map.put("group1",new ArrayList());
ReflectionTestUtils.setField(clusterCommands,"hostGroups",map);
when(client.getHostNames()).thenReturn(singletonMap("host2","HEALTHY"));
String result=clusterCommands.assign(new Host("host3"),"group1");
assertEquals("host3 is not a valid hostname",result);
}
InternalCallVerifier BooleanVerifier
@Test public void testIsClusterPreviewCommandAvailableForNoAssignments(){
when(context.isFocusOnClusterBuild()).thenReturn(true);
ReflectionTestUtils.setField(clusterCommands,"hostGroups",singletonMap("group1",emptyList()));
boolean result=clusterCommands.isClusterPreviewCommandAvailable();
assertFalse(result);
}
Class: org.apache.ambari.shell.commands.HostCommandsTest InternalCallVerifier EqualityVerifier
@Test public void testFocusHostForValidHost(){
when(client.getHostNames()).thenReturn(singletonMap("host1","HEALTHY"));
String result=hostCommands.focusHost(new Host("host1"));
verify(context).setFocus("host1",FocusType.HOST);
assertEquals("Focus set to: host1",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testFocusHostForInvalidHost(){
when(client.getHostNames()).thenReturn(singletonMap("host3","HEALTHY"));
String result=hostCommands.focusHost(new Host("host1"));
verify(context,times(0)).setFocus("host1",FocusType.HOST);
assertEquals("host1 is not a valid host name",result);
}
Class: org.apache.ambari.shell.customization.AmbariPromptTest InternalCallVerifier EqualityVerifier
@Test public void testGetProviderName(){
String result=prompt.getProviderName();
assertEquals(AmbariPrompt.class.getSimpleName(),result);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetPrompt(){
when(context.getPrompt()).thenReturn("prompt");
String result=prompt.getPrompt();
assertEquals("prompt",result);
}
Class: org.apache.ambari.shell.model.AmbariContextTest InternalCallVerifier EqualityVerifier
@Test public void testGetPromptForRootButNotConnected(){
ReflectionTestUtils.setField(ambariContext,"cluster",null);
String result=ambariContext.getPrompt();
assertEquals("ambari-shell>",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetPromptForRoot(){
ReflectionTestUtils.setField(ambariContext,"cluster","single-node");
String result=ambariContext.getPrompt();
assertEquals(FocusType.ROOT.prefix() + ":single-node>",result);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetPromptForFocus(){
ReflectionTestUtils.setField(ambariContext,"cluster","single-node");
ReflectionTestUtils.setField(ambariContext,"focus",new Focus("target",FocusType.HOST));
String result=ambariContext.getPrompt();
assertEquals(String.format("%s:%s>",FocusType.HOST.prefix(),"target"),result);
}
Class: org.apache.ambari.view.capacityscheduler.ConfigurationServiceTest InternalCallVerifier EqualityVerifier
@Test public void testRightConfigurationValue(){
Response response=configurationService.getConfigurationValue("ranger-yarn-plugin-properties","ranger-yarn-plugin-enabled");
JSONObject jsonObject=(JSONObject)response.getEntity();
JSONArray arr=(JSONArray)jsonObject.get("configs");
Assert.assertEquals(arr.size(),1);
JSONObject obj=(JSONObject)arr.get(0);
Assert.assertEquals(obj.get("siteName"),"ranger-yarn-plugin-properties");
Assert.assertEquals(obj.get("configName"),"ranger-yarn-plugin-enabled");
Assert.assertEquals(obj.get("configValue"),"Yes");
}
InternalCallVerifier EqualityVerifier
@Test public void testExceptionOnWrongConfigurationValue(){
Response response=configurationService.getConfigurationValue("random-site","random-key");
JSONObject jsonObject=(JSONObject)response.getEntity();
JSONArray arr=(JSONArray)jsonObject.get("configs");
Assert.assertEquals(arr.size(),1);
JSONObject obj=(JSONObject)arr.get(0);
Assert.assertEquals(obj.get("siteName"),"random-site");
Assert.assertEquals(obj.get("configName"),"random-key");
Assert.assertEquals(obj.get("configValue"),null);
}
Class: org.apache.ambari.view.filebrowser.FilebrowserTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testUploadFile() throws Exception {
Response response=uploadFile("/tmp/","testUpload",".tmp","Hello world");
Assert.assertEquals(200,response.getStatus());
Response listdir=fileBrowserService.fileOps().listdir("/tmp");
JSONObject responseObject=(JSONObject)listdir.getEntity();
JSONArray statuses=(JSONArray)responseObject.get("files");
System.out.println(statuses.size());
Response response2=fileBrowserService.download().browse("/tmp/testUpload.tmp",false,false,httpHeaders,uriInfo);
Assert.assertEquals(200,response2.getStatus());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testListDir() throws Exception {
FileOperationService.MkdirRequest request=new FileOperationService.MkdirRequest();
request.path="/tmp1";
fileBrowserService.fileOps().mkdir(request);
Response response=fileBrowserService.fileOps().listdir("/");
JSONObject responseObject=(JSONObject)response.getEntity();
JSONArray statuses=(JSONArray)responseObject.get("files");
System.out.println(response.getEntity());
Assert.assertEquals(200,response.getStatus());
Assert.assertTrue(statuses.size() > 0);
System.out.println(statuses);
}
InternalCallVerifier EqualityVerifier
@Test public void testUsername() throws Exception {
Assert.assertEquals(System.getProperty("user.name"),fileBrowserService.upload().getDoAsUsername(context));
properties.put("webhdfs.username","test-user");
Assert.assertEquals("test-user",fileBrowserService.upload().getDoAsUsername(context));
}
Class: org.apache.ambari.view.filebrowser.PropertyValidatorTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testValidatePropertyWithValidHdfsURI(){
Map propertyMap=new HashMap();
propertyMap.put(PropertyValidator.WEBHDFS_URL,"hdfs://host:1234/");
ViewInstanceDefinition instanceDefinition=getInstanceDef(propertyMap);
ValidationResult result=new PropertyValidator().validateProperty(PropertyValidator.WEBHDFS_URL,instanceDefinition,null);
assertEquals(result,ValidationResult.SUCCESS);
assertEquals(result.isValid(),true);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testValidatePropertyWithValidWebhdfsURI(){
Map propertyMap=new HashMap();
propertyMap.put(PropertyValidator.WEBHDFS_URL,"webhdfs://host:1234/");
ViewInstanceDefinition instanceDefinition=getInstanceDef(propertyMap);
ValidationResult result=new PropertyValidator().validateProperty(PropertyValidator.WEBHDFS_URL,instanceDefinition,null);
assertEquals(result,ValidationResult.SUCCESS);
assertEquals(result.isValid(),true);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testValidatePropertyWithLocalFileURI(){
Map propertyMap=new HashMap();
propertyMap.put(PropertyValidator.WEBHDFS_URL,"file:///");
ViewInstanceDefinition instanceDefinition=getInstanceDef(propertyMap);
ValidationResult result=new PropertyValidator().validateProperty(PropertyValidator.WEBHDFS_URL,instanceDefinition,null);
assertEquals(result.getClass(),PropertyValidator.InvalidPropertyValidationResult.class);
assertEquals(result.isValid(),false);
assertEquals(result.getDetail(),"Must be valid URL");
}
Class: org.apache.ambari.view.hive.PropertyValidatorTest InternalCallVerifier BooleanVerifier
@Test public void testValidatePropertyWebHDFSCom() throws Exception {
PropertyValidator validator=new PropertyValidator();
ViewInstanceDefinition definition=getViewInstanceDefinition();
definition.getPropertyMap().put(PropertyValidator.WEBHDFS_URL,"hdfs://hostname.com:8020");
assertTrue(validator.validateProperty(PropertyValidator.WEBHDFS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
definition.getPropertyMap().put(PropertyValidator.WEBHDFS_URL,"webhdfs://hostname.com:50070");
assertTrue(validator.validateProperty(PropertyValidator.WEBHDFS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
definition.getPropertyMap().put(PropertyValidator.WEBHDFS_URL,"http://hostname.com:50070");
assertFalse(validator.validateProperty(PropertyValidator.WEBHDFS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
}
InternalCallVerifier BooleanVerifier
@Test public void testValidatePropertyWebHDFSInternal() throws Exception {
PropertyValidator validator=new PropertyValidator();
ViewInstanceDefinition definition=getViewInstanceDefinition();
definition.getPropertyMap().put(PropertyValidator.WEBHDFS_URL,"hdfs://hostname.internal:8020");
assertTrue(validator.validateProperty(PropertyValidator.WEBHDFS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
definition.getPropertyMap().put(PropertyValidator.WEBHDFS_URL,"webhdfs://hostname.internal:50070");
assertTrue(validator.validateProperty(PropertyValidator.WEBHDFS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
definition.getPropertyMap().put(PropertyValidator.WEBHDFS_URL,"http://hostname.internal:50070");
assertFalse(validator.validateProperty(PropertyValidator.WEBHDFS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
}
InternalCallVerifier BooleanVerifier
@Test public void testValidatePropertyATSCom() throws Exception {
PropertyValidator validator=new PropertyValidator();
ViewInstanceDefinition definition=getViewInstanceDefinition();
definition.getPropertyMap().put(PropertyValidator.YARN_ATS_URL,"http://hostname.com:8088");
assertTrue(validator.validateProperty(PropertyValidator.YARN_ATS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
}
InternalCallVerifier BooleanVerifier
@Test public void testValidatePropertyATSInternal() throws Exception {
PropertyValidator validator=new PropertyValidator();
ViewInstanceDefinition definition=getViewInstanceDefinition();
definition.getPropertyMap().put(PropertyValidator.YARN_ATS_URL,"http://hostname.internal:8088");
assertTrue(validator.validateProperty(PropertyValidator.YARN_ATS_URL,definition,Validator.ValidationContext.PRE_CREATE).isValid());
}
Class: org.apache.ambari.view.hive.resources.files.FileServiceTest APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testFakeFile() throws IOException, InterruptedException {
String content="Fake file content";
String encodedContent=Base64.encodeBase64String(content.getBytes());
String filepath="fakefile://" + encodedContent;
Response response=fileService.getFilePage(filepath,0l);
ServiceTestUtils.assertHTTPResponseOK(response);
JSONObject obj=((JSONObject)response.getEntity());
assertFileJsonResponseSanity(obj);
FileResource fileResource=(FileResource)obj.get("file");
Assert.assertEquals(content,fileResource.getFileContent());
Assert.assertEquals(0,fileResource.getPage());
Assert.assertFalse(fileResource.isHasNext());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testJsonFakeFile() throws IOException, InterruptedException, Exception {
String content="{\"queryText\":\"Query Content\"}";
String url="http://fileurl/content#queryText";
String filepath="jsonpath:" + url;
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
InputStream inputStream=IOUtils.toInputStream(content);
reset(context);
expect(context.getProperties()).andReturn(properties).anyTimes();
expect(context.getURLStreamProvider()).andReturn(urlStreamProvider);
expect(urlStreamProvider.readFrom(eq(url),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
fileService=getService(FileService.class,handler,context);
replay(context,urlStreamProvider);
Response response=fileService.getFilePage(filepath,0l);
ServiceTestUtils.assertHTTPResponseOK(response);
JSONObject obj=((JSONObject)response.getEntity());
assertFileJsonResponseSanity(obj);
FileResource fileResource=(FileResource)obj.get("file");
Assert.assertEquals("Query Content",fileResource.getFileContent());
Assert.assertEquals(0,fileResource.getPage());
Assert.assertFalse(fileResource.isHasNext());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPagination() throws Exception {
createFile("/tmp/testPagination","1234567890");
Response response=fileService.getFilePage("/tmp/testPagination",0L);
ServiceTestUtils.assertHTTPResponseOK(response);
JSONObject obj=((JSONObject)response.getEntity());
assertFileJsonResponseSanity(obj);
FileResource firstPage=(FileResource)obj.get("file");
Assert.assertEquals("1234",firstPage.getFileContent());
Assert.assertEquals(3,firstPage.getPageCount());
Assert.assertEquals(0,firstPage.getPage());
Assert.assertTrue(firstPage.isHasNext());
Assert.assertEquals("/tmp/testPagination",firstPage.getFilePath());
response=fileService.getFilePage("/tmp/testPagination",1L);
ServiceTestUtils.assertHTTPResponseOK(response);
FileResource secondPage=(FileResource)((JSONObject)response.getEntity()).get("file");
Assert.assertEquals("5678",secondPage.getFileContent());
Assert.assertEquals(1,secondPage.getPage());
Assert.assertTrue(secondPage.isHasNext());
response=fileService.getFilePage("/tmp/testPagination",2L);
ServiceTestUtils.assertHTTPResponseOK(response);
FileResource thirdPage=(FileResource)((JSONObject)response.getEntity()).get("file");
Assert.assertEquals("90",thirdPage.getFileContent());
Assert.assertEquals(2,thirdPage.getPage());
Assert.assertFalse(thirdPage.isHasNext());
thrown.expect(BadRequestFormattedException.class);
fileService.getFilePage("/tmp/testPagination",3L);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testZeroLengthFile() throws Exception {
createFile("/tmp/testZeroLengthFile","");
Response response=fileService.getFilePage("/tmp/testZeroLengthFile",0L);
ServiceTestUtils.assertHTTPResponseOK(response);
JSONObject obj=((JSONObject)response.getEntity());
assertFileJsonResponseSanity(obj);
FileResource fileResource=(FileResource)obj.get("file");
Assert.assertEquals("",fileResource.getFileContent());
Assert.assertEquals(0,fileResource.getPage());
Assert.assertFalse(fileResource.isHasNext());
}
Class: org.apache.ambari.view.hive.resources.jobs.ATSParserTest InternalCallVerifier EqualityVerifier
@Test public void testGetTezDAGByName() throws Exception {
IATSParser jobLoader=new ATSParser(new ATSRequestsDelegateStub());
TezDagId tezDag=jobLoader.getTezDAGByName("hive_20150209144848_c3a5a07b-c3b6-4f57-a6d5-3dadecdd6fd0:4");
Assert.assertEquals("dag_1423156117563_0005_2",tezDag.entity);
Assert.assertEquals("application_1423156117563_0005",tezDag.applicationId);
Assert.assertEquals("SUCCEEDED",tezDag.status);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetHiveJobsList() throws Exception {
IATSParser jobLoader=new ATSParser(new ATSRequestsDelegateStub());
List jobs=jobLoader.getHiveQueryIdsList("hive");
Assert.assertEquals(1,jobs.size());
HiveQueryId job=jobs.get(0);
Assert.assertEquals("hive_20150209144848_c3a5a07b-c3b6-4f57-a6d5-3dadecdd6fd0",job.entity);
Assert.assertEquals(1423493324L,job.starttime);
Assert.assertEquals("hive",job.user);
Assert.assertEquals(1423493342L - 1423493324L,job.duration);
Assert.assertEquals("select count(*) from z",job.query);
Assert.assertEquals(1,job.dagNames.size());
Assert.assertEquals("hive_20150209144848_c3a5a07b-c3b6-4f57-a6d5-3dadecdd6fd0:4",job.dagNames.get(0));
Assert.assertEquals(2,job.stages.size());
Assert.assertTrue(HiveQueryId.ATS_15_RESPONSE_VERSION > job.version);
jobLoader=new ATSParser(new ATSV15RequestsDelegateStub());
List jobsv2=jobLoader.getHiveQueryIdsList("hive");
Assert.assertEquals(1,jobsv2.size());
HiveQueryId jobv2=jobsv2.get(0);
Assert.assertTrue(HiveQueryId.ATS_15_RESPONSE_VERSION <= jobv2.version);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetTezDagByEntity() throws Exception {
IATSParser jobLoader=new ATSParser(new ATSV15RequestsDelegateStub());
TezDagId tezDag=jobLoader.getTezDAGByEntity("hive_20150209144848_c3a5a07b-c3b6-4f57-a6d5-3dadecdd6fd0:4");
Assert.assertEquals("dag_1423156117563_0005_2",tezDag.entity);
Assert.assertEquals("application_1423156117563_0005",tezDag.applicationId);
Assert.assertEquals("SUCCEEDED",tezDag.status);
}
Class: org.apache.ambari.view.hive.resources.jobs.AggregatorTest InternalCallVerifier EqualityVerifier
@Test public void testJobWithoutOperationIdShouldBeIgnored() throws Exception {
MockJobResourceManager jobResourceManager=getJobResourceManagerWithJobs(getSampleViewJob("1"));
Aggregator aggregator=new Aggregator(jobResourceManager,getEmptyOperationHandleResourceManager(),getEmptyATSParser());
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(0,aggregated.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testReadJobWithHS2OutsideOfView() throws Exception {
HiveQueryId hiveQueryId=getSampleHiveQueryId("ENTITY-NAME");
ensureOperationIdSet(hiveQueryId);
MockATSParser atsParser=getMockATSWithQueries(hiveQueryId);
Aggregator aggregator=new Aggregator(getEmptyJobResourceManager(),getEmptyOperationHandleResourceManager(),atsParser);
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(1,aggregated.size());
Job job=aggregated.get(0);
Assert.assertEquals("ENTITY-NAME",job.getId());
Assert.assertEquals(SOME_QUERY,job.getTitle());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testReadJobOnlyInView() throws Exception {
MockJobResourceManager jobResourceManager=getJobResourceManagerWithJobs(getSampleViewJob("1"));
StoredOperationHandle operationHandle=getSampleOperationHandle("5","1");
MockOperationHandleResourceManager operationHandleResourceManager=getOperationHandleRMWithEntities(operationHandle);
Aggregator aggregator=new Aggregator(jobResourceManager,operationHandleResourceManager,getEmptyATSParser());
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(1,aggregated.size());
Job job=aggregated.get(0);
Assert.assertEquals("1",job.getId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testReadJobBothATSAndViewV2() throws Exception {
HiveQueryId hiveQueryId=getSampleHiveQueryIdV2("ENTITY-NAME");
hiveQueryId.operationId=Aggregator.hexStringToUrlSafeBase64("1b2b");
MockATSParser atsParser=getMockATSWithQueries(hiveQueryId);
MockJobResourceManager jobResourceManager=getJobResourceManagerWithJobs(getSampleViewJob("1"));
StoredOperationHandle operationHandle=getSampleOperationHandle("5","1");
operationHandle.setGuid("1b2b");
MockOperationHandleResourceManager operationHandleResourceManager=getOperationHandleRMWithEntities(operationHandle);
Aggregator aggregator=new Aggregator(jobResourceManager,operationHandleResourceManager,atsParser);
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(1,aggregated.size());
Job job=aggregated.get(0);
Assert.assertEquals("1",job.getId());
Assert.assertEquals("app_test_1",job.getApplicationId());
Assert.assertEquals("ENTITY-NAME",job.getDagId());
Assert.assertEquals("SUCCEEDED",job.getStatus());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testReadJobOutsideOfHS2() throws Exception {
HiveQueryId hiveQueryId=getSampleHiveQueryId("ENTITY-NAME");
ensureOperationIdUnset(hiveQueryId);
MockATSParser atsParser=getMockATSWithQueries(hiveQueryId);
Aggregator aggregator=new Aggregator(getEmptyJobResourceManager(),getEmptyOperationHandleResourceManager(),atsParser);
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(1,aggregated.size());
Job job=aggregated.get(0);
Assert.assertEquals("ENTITY-NAME",job.getId());
Assert.assertEquals(SOME_QUERY,job.getTitle());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testReadJobComplex() throws Exception {
HiveQueryId hiveQueryId1=getSampleHiveQueryId("ENTITY-NAME");
hiveQueryId1.operationId=Aggregator.hexStringToUrlSafeBase64("1a1b");
Job job1=getSampleViewJob("1");
StoredOperationHandle operationHandle1=getSampleOperationHandle("5","1");
operationHandle1.setGuid("1a1b");
HiveQueryId hiveQueryId2=getSampleHiveQueryId("ENTITY-NAME2");
hiveQueryId2.operationId=Aggregator.hexStringToUrlSafeBase64("2a2a");
Job job3=getSampleViewJob("3");
StoredOperationHandle operationHandle3=getSampleOperationHandle("6","3");
operationHandle3.setGuid("3c3d");
MockATSParser atsParser=getMockATSWithQueries(hiveQueryId1,hiveQueryId2);
MockJobResourceManager jobResourceManager=getJobResourceManagerWithJobs(job1,job3);
MockOperationHandleResourceManager operationHandleRM=getOperationHandleRMWithEntities(operationHandle1,operationHandle3);
Aggregator aggregator=new Aggregator(jobResourceManager,operationHandleRM,atsParser);
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(3,aggregated.size());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testReadJobBothATSAndView() throws Exception {
HiveQueryId hiveQueryId=getSampleHiveQueryId("ENTITY-NAME");
hiveQueryId.operationId=Aggregator.hexStringToUrlSafeBase64("1b2b");
MockATSParser atsParser=getMockATSWithQueries(hiveQueryId);
MockJobResourceManager jobResourceManager=getJobResourceManagerWithJobs(getSampleViewJob("1"));
StoredOperationHandle operationHandle=getSampleOperationHandle("5","1");
operationHandle.setGuid("1b2b");
MockOperationHandleResourceManager operationHandleResourceManager=getOperationHandleRMWithEntities(operationHandle);
Aggregator aggregator=new Aggregator(jobResourceManager,operationHandleResourceManager,atsParser);
List aggregated=aggregator.readAll("luke");
Assert.assertEquals(1,aggregated.size());
Job job=aggregated.get(0);
Assert.assertEquals("1",job.getId());
}
Class: org.apache.ambari.view.hive.resources.jobs.JobServiceTest InternalCallVerifier EqualityVerifier
@Test public void createJobFromQuery() throws IOException, InterruptedException, HdfsApiException {
setupHdfsApiMock();
SavedQuery savedQueryForJob=createSavedQuery("Test",null);
JobService.JobRequest jobCreationRequest=new JobService.JobRequest();
jobCreationRequest.job=new JobImpl();
jobCreationRequest.job.setQueryId(savedQueryForJob.getId());
Response response=jobService.create(jobCreationRequest,ServiceTestUtils.getResponseWithLocation(),ServiceTestUtils.getDefaultUriInfo());
ServiceTestUtils.assertHTTPResponseCreated(response);
JSONObject jobObj=(JSONObject)response.getEntity();
assertResponseJobSanity(jobObj);
Assert.assertEquals(getFieldFromJobJSON(jobObj,"queryId"),savedQueryForJob.getId());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createJobForcedContent() throws IOException, InterruptedException, HdfsApiException {
HdfsApiMock hdfsApiMock=setupHdfsApiMock();
JobService.JobRequest request=new JobService.JobRequest();
request.job=new JobImpl();
request.job.setForcedContent("Hello world");
Response response=jobService.create(request,ServiceTestUtils.getResponseWithLocation(),ServiceTestUtils.getDefaultUriInfo());
ServiceTestUtils.assertHTTPResponseCreated(response);
JSONObject jobObj=(JSONObject)response.getEntity();
assertResponseJobSanity(jobObj);
Assert.assertNull(getFieldFromJobJSON(jobObj,"queryId"));
Assert.assertEquals("",getFieldFromJobJSON(jobObj,"forcedContent"));
Assert.assertEquals("Hello world",hdfsApiMock.getQueryOutputStream().toString());
}
Class: org.apache.ambari.view.hive.resources.jobs.LogParserTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParseTezLog(){
String log="INFO : Tez session hasn't been created yet. Opening session\n" + "INFO :\n" + "\n"+ "INFO : Status: Running (Executing on YARN cluster with App id application_1423156117563_0003)\n"+ "\n"+ "INFO : Map 1: -/- Reducer 2: 0/1\n"+ "INFO : Map 1: 0/1 Reducer 2: 0/1\n"+ "INFO : Map 1: 0/1 Reducer 2: 0/1\n"+ "INFO : Map 1: 0(+1)/1 Reducer 2: 0/1\n"+ "INFO : Map 1: 0(+1)/1 Reducer 2: 0/1\n"+ "INFO : Map 1: 1/1 Reducer 2: 0(+1)/1\n"+ "INFO : Map 1: 1/1 Reducer 2: 1/1 ";
LogParser p=LogParser.parseLog(log);
Assert.assertEquals(1,p.getAppsList().size());
Assert.assertEquals("application_1423156117563_0003",(((LogParser.AppId)(p.getAppsList().toArray())[0]).getIdentifier()));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testParseMRLog(){
String log="INFO : Number of reduce tasks determined at compile time: 1\n" + "INFO : In order to change the average load for a reducer (in bytes):\n" + "INFO : set hive.exec.reducers.bytes.per.reducer=\n"+ "INFO : In order to limit the maximum number of reducers:\n"+ "INFO : set hive.exec.reducers.max=\n"+ "INFO : In order to set a constant number of reducers:\n"+ "INFO : set mapreduce.job.reduces=\n"+ "WARN : Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.\n"+ "INFO : number of splits:1\n"+ "INFO : Submitting tokens for job: job_1421248330903_0003\n"+ "INFO : The url to track the job: http://dataworker.hortonworks.com:8088/proxy/application_1421248330903_0003/\n"+ "INFO : Starting Job = job_1421248330903_0003, Tracking URL = http://dataworker.hortonworks.com:8088/proxy/application_1421248330903_0003/\n"+ "INFO : Kill Command = /usr/hdp/current/hadoop-client/bin/hadoop job -kill job_1421248330903_0003\n"+ "INFO : Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1\n"+ "INFO : 2015-01-21 15:03:55,979 Stage-1 map = 0%, reduce = 0%\n"+ "INFO : 2015-01-21 15:04:07,503 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 0.79 sec\n"+ "INFO : 2015-01-21 15:04:17,384 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 1.86 sec\n"+ "INFO : MapReduce Total cumulative CPU time: 1 seconds 860 msec\n"+ "INFO : Ended Job = job_1421248330903_0003";
LogParser p=LogParser.parseLog(log);
Assert.assertEquals(1,p.getAppsList().size());
Assert.assertEquals("application_1421248330903_0003",(((LogParser.AppId)(p.getAppsList().toArray())[0]).getIdentifier()));
}
Class: org.apache.ambari.view.hive.resources.resources.FileResourceServiceTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void deleteFileResourceItem(){
Response createdFileResourceItem=doCreateFileResourceItem();
Object createdUdfId=((FileResourceItem)((JSONObject)createdFileResourceItem.getEntity()).get("fileResource")).getId();
Response response=resourceService.delete(String.valueOf(createdUdfId));
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
resourceService.getOne(String.valueOf(createdUdfId));
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createFileResourceItem(){
Response response=doCreateFileResourceItem();
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("fileResource"));
Assert.assertNotNull(((FileResourceItem)obj.get("fileResource")).getId());
Assert.assertFalse(((FileResourceItem)obj.get("fileResource")).getId() == null);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void updateFileResourceItem(){
Response createdFileResourceItem=doCreateFileResourceItem();
Object createdUdfId=((FileResourceItem)((JSONObject)createdFileResourceItem.getEntity()).get("fileResource")).getId();
FileResourceService.ResourceRequest request=new FileResourceService.ResourceRequest();
request.fileResource=new FileResourceItem();
request.fileResource.setPath("/tmp/updatedFileResourceItem.jar");
request.fileResource.setName("TestFileResourceItem2");
Response response=resourceService.update(request,String.valueOf(createdUdfId));
Assert.assertEquals(204,response.getStatus());
Response response2=resourceService.getOne(String.valueOf(createdUdfId));
Assert.assertEquals(200,response2.getStatus());
JSONObject obj=((JSONObject)response2.getEntity());
Assert.assertTrue(obj.containsKey("fileResource"));
Assert.assertEquals(((FileResourceItem)obj.get("fileResource")).getName(),request.fileResource.getName());
Assert.assertEquals(((FileResourceItem)obj.get("fileResource")).getPath(),request.fileResource.getPath());
}
Class: org.apache.ambari.view.hive.resources.savedQueries.SavedQueryServiceTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createSavedQuery(){
Response response=doCreateSavedQuery();
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("savedQuery"));
Assert.assertNotNull(((SavedQuery)obj.get("savedQuery")).getId());
Assert.assertTrue(((SavedQuery)obj.get("savedQuery")).getId() != null);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void delete(){
Response created=doCreateSavedQuery();
Object createdId=((SavedQuery)((JSONObject)created.getEntity()).get("savedQuery")).getId();
Response response=savedQueryService.delete(String.valueOf(createdId));
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
savedQueryService.getOne(String.valueOf(createdId));
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void list(){
doCreateSavedQuery("Title 1","/path/to/file.hql");
doCreateSavedQuery("Title 2","/path/to/file.hql");
Response response=savedQueryService.getList();
Assert.assertEquals(200,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("savedQueries"));
List items=(List)obj.get("savedQueries");
boolean containsTitle=false;
for ( SavedQuery item : items) containsTitle=containsTitle || item.getTitle().compareTo("Title 1") == 0;
Assert.assertTrue(containsTitle);
containsTitle=false;
for ( SavedQuery item : items) containsTitle=containsTitle || item.getTitle().compareTo("Title 2") == 0;
Assert.assertTrue(containsTitle);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createSavedQueryAutoCreate(){
Response response=doCreateSavedQuery("Test",null);
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("savedQuery"));
Assert.assertNotNull(((SavedQuery)obj.get("savedQuery")).getId());
Assert.assertFalse(((SavedQuery)obj.get("savedQuery")).getId() == null);
Assert.assertFalse(((SavedQuery)obj.get("savedQuery")).getQueryFile().isEmpty());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void update(){
Response created=doCreateSavedQuery();
Object createdId=((SavedQuery)((JSONObject)created.getEntity()).get("savedQuery")).getId();
SavedQueryService.SavedQueryRequest request=new SavedQueryService.SavedQueryRequest();
request.savedQuery=new SavedQuery();
request.savedQuery.setTitle("Updated Query");
Response response=savedQueryService.update(request,String.valueOf(createdId));
Assert.assertEquals(204,response.getStatus());
Response response2=savedQueryService.getOne(String.valueOf(createdId));
Assert.assertEquals(200,response2.getStatus());
JSONObject obj=((JSONObject)response2.getEntity());
Assert.assertTrue(obj.containsKey("savedQuery"));
Assert.assertEquals(((SavedQuery)obj.get("savedQuery")).getTitle(),request.savedQuery.getTitle());
}
Class: org.apache.ambari.view.hive.resources.udfs.UDFServiceTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createUDF(){
Response response=doCreateUDF();
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("udf"));
Assert.assertNotNull(((UDF)obj.get("udf")).getId());
Assert.assertFalse(((UDF)obj.get("udf")).getId() == null);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void updateUDF(){
Response createdUDF=doCreateUDF();
Object createdUdfId=((UDF)((JSONObject)createdUDF.getEntity()).get("udf")).getId();
UDFService.UDFRequest request=new UDFService.UDFRequest();
request.udf=new UDF();
request.udf.setClassname("/tmp/updatedUDF.jar");
request.udf.setName("TestUDF2");
Response response=udfService.update(request,String.valueOf(createdUdfId));
Assert.assertEquals(204,response.getStatus());
Response response2=udfService.getOne(String.valueOf(createdUdfId));
Assert.assertEquals(200,response2.getStatus());
JSONObject obj=((JSONObject)response2.getEntity());
Assert.assertTrue(obj.containsKey("udf"));
Assert.assertEquals(((UDF)obj.get("udf")).getName(),request.udf.getName());
Assert.assertEquals(((UDF)obj.get("udf")).getClassname(),request.udf.getClassname());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void deleteUDF(){
Response createdUDF=doCreateUDF();
Object createdUdfId=((UDF)((JSONObject)createdUDF.getEntity()).get("udf")).getId();
Response response=udfService.delete(String.valueOf(createdUdfId));
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
udfService.getOne(String.valueOf(createdUdfId));
}
Class: org.apache.ambari.view.hive.resources.upload.DataParserTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testDataParser() throws IOException {
String str="1,a\n" + "2,b\n" + "3,c\n";
StringReader sr=new StringReader(str);
ParseOptions parseOptions=new ParseOptions();
parseOptions.setOption(ParseOptions.OPTIONS_FILE_TYPE,ParseOptions.FILE_TYPE_CSV);
parseOptions.setOption(ParseOptions.OPTIONS_HEADER,ParseOptions.HEADER_FIRST_RECORD);
DataParser dp=new DataParser(sr,parseOptions);
dp.parsePreview();
Assert.assertNotNull(dp.getPreviewRows());
Assert.assertNotNull(dp.getHeader());
Assert.assertEquals(3,dp.getPreviewRows().size());
Assert.assertEquals(2,dp.getHeader().size());
ColumnDescription[] cd={new ColumnDescriptionImpl("1",ColumnDescriptionShort.DataTypes.INT.toString(),0),new ColumnDescriptionImpl("a",ColumnDescriptionShort.DataTypes.CHAR.toString(),1)};
Assert.assertArrayEquals("Header Not Correct.",cd,dp.getHeader().toArray());
sr.close();
}
Class: org.apache.ambari.view.pig.test.FileTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testZeroLengthFile() throws Exception {
String name=UUID.randomUUID().toString().replaceAll("-","");
String filePath="/tmp/" + name;
doCreateFile(name,"");
Response response=fileService.getFile(filePath,0L,null);
Assert.assertEquals(200,response.getStatus());
JSONObject obj=((JSONObject)response.getEntity());
Assert.assertEquals("",((FileResource)obj.get("file")).getFileContent());
Assert.assertEquals(0,((FileResource)obj.get("file")).getPage());
Assert.assertFalse(((FileResource)obj.get("file")).isHasNext());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testUpdateFileContent() throws Exception {
String name=UUID.randomUUID().toString().replaceAll("-","");
String filePath="/tmp/" + name;
Response createdFile=doCreateFile(name,"some content");
FileService.FileResourceRequest request=new FileService.FileResourceRequest();
request.file=new FileResource();
request.file.setFilePath(filePath);
request.file.setFileContent("1234567890");
Response response=fileService.updateFile(request,filePath);
Assert.assertEquals(204,response.getStatus());
Response response2=fileService.getFile(filePath,0L,null);
Assert.assertEquals(200,response2.getStatus());
JSONObject obj=((JSONObject)response2.getEntity());
Assert.assertTrue(obj.containsKey("file"));
Assert.assertEquals("1234",((FileResource)obj.get("file")).getFileContent());
}
InternalCallVerifier EqualityVerifier
@Test public void testDeleteFile() throws IOException, InterruptedException {
String name=UUID.randomUUID().toString().replaceAll("-","");
String filePath="/tmp/" + name;
Response createdFile=doCreateFile(name,"some content");
Response response=fileService.deleteFile(filePath);
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
fileService.getFile(filePath,0L,null);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPagination() throws Exception {
String name=UUID.randomUUID().toString().replaceAll("-","");
String filePath="/tmp/" + name;
doCreateFile(name,"1234567890");
Response response=fileService.getFile(filePath,0L,null);
Assert.assertEquals(200,response.getStatus());
JSONObject obj=((JSONObject)response.getEntity());
Assert.assertTrue(obj.containsKey("file"));
Assert.assertEquals("1234",((FileResource)obj.get("file")).getFileContent());
Assert.assertEquals(3,((FileResource)obj.get("file")).getPageCount());
Assert.assertEquals(0,((FileResource)obj.get("file")).getPage());
Assert.assertTrue(((FileResource)obj.get("file")).isHasNext());
Assert.assertEquals(filePath,((FileResource)obj.get("file")).getFilePath());
response=fileService.getFile(filePath,1L,null);
Assert.assertEquals(200,response.getStatus());
obj=((JSONObject)response.getEntity());
Assert.assertEquals("5678",((FileResource)obj.get("file")).getFileContent());
Assert.assertEquals(1,((FileResource)obj.get("file")).getPage());
Assert.assertTrue(((FileResource)obj.get("file")).isHasNext());
response=fileService.getFile(filePath,2L,null);
Assert.assertEquals(200,response.getStatus());
obj=((JSONObject)response.getEntity());
Assert.assertEquals("90",((FileResource)obj.get("file")).getFileContent());
Assert.assertEquals(2,((FileResource)obj.get("file")).getPage());
Assert.assertFalse(((FileResource)obj.get("file")).isHasNext());
thrown.expect(BadRequestFormattedException.class);
fileService.getFile(filePath,3L,null);
}
Class: org.apache.ambari.view.pig.test.HelpTest InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void configTest(){
Response response=helpService.config();
Assert.assertEquals(200,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("webhdfs.url"));
Assert.assertEquals(hdfsURI,obj.get("webhdfs.url"));
}
Class: org.apache.ambari.view.pig.test.IntegrationalTest APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testStorageDependsOnInstance() throws Exception {
StorageUtil.dropAllConnections();
ViewContext context1=createNiceMock(ViewContext.class);
ViewContext context2=createNiceMock(ViewContext.class);
ViewContext context3=createNiceMock(ViewContext.class);
expect(context1.getProperties()).andReturn(properties).anyTimes();
expect(context1.getUsername()).andReturn("ambari-qa").anyTimes();
expect(context1.getInstanceName()).andReturn("Pig1").anyTimes();
expect(context2.getProperties()).andReturn(properties).anyTimes();
expect(context2.getUsername()).andReturn("ambari-qa").anyTimes();
expect(context2.getInstanceName()).andReturn("Pig2").anyTimes();
expect(context3.getProperties()).andReturn(properties).anyTimes();
expect(context3.getUsername()).andReturn("ambari-qa").anyTimes();
expect(context3.getInstanceName()).andReturn("Pig1").anyTimes();
replay(context1,context2,context3);
Storage storage1=StorageUtil.getInstance(context1).getStorage();
Storage storage2=StorageUtil.getInstance(context2).getStorage();
Assert.assertNotSame(storage1,storage2);
Storage storage1_2=StorageUtil.getInstance(context1).getStorage();
Storage storage2_2=StorageUtil.getInstance(context1).getStorage();
Assert.assertSame(storage1_2,storage2_2);
Storage storage1_3=StorageUtil.getInstance(context1).getStorage();
Storage storage3_3=StorageUtil.getInstance(context3).getStorage();
Assert.assertSame(storage1_3,storage3_3);
}
APIUtilityVerifier InternalCallVerifier IdentityVerifier
@Test public void testHdfsApiDependsOnInstance() throws Exception {
UserLocal.dropAllConnections(HdfsApi.class);
ViewContext context1=createNiceMock(ViewContext.class);
ViewContext context2=createNiceMock(ViewContext.class);
ViewContext context3=createNiceMock(ViewContext.class);
expect(context1.getProperties()).andReturn(properties).anyTimes();
expect(context1.getUsername()).andReturn("ambari-qa").anyTimes();
expect(context1.getInstanceName()).andReturn("Pig1").anyTimes();
expect(context2.getProperties()).andReturn(properties).anyTimes();
expect(context2.getUsername()).andReturn("ambari-qa").anyTimes();
expect(context2.getInstanceName()).andReturn("Pig2").anyTimes();
expect(context3.getProperties()).andReturn(properties).anyTimes();
expect(context3.getUsername()).andReturn("ambari-qa").anyTimes();
expect(context3.getInstanceName()).andReturn("Pig1").anyTimes();
replay(context1,context2,context3);
HdfsApi hdfsApi1=UserLocalObjects.getHdfsApi(context1);
HdfsApi hdfsApi2=UserLocalObjects.getHdfsApi(context2);
Assert.assertNotSame(hdfsApi1,hdfsApi2);
HdfsApi hdfsApi1_2=UserLocalObjects.getHdfsApi(context1);
HdfsApi hdfsApi2_2=UserLocalObjects.getHdfsApi(context1);
Assert.assertSame(hdfsApi1_2,hdfsApi2_2);
HdfsApi hdfsApi1_3=UserLocalObjects.getHdfsApi(context1);
HdfsApi hdfsApi3_3=UserLocalObjects.getHdfsApi(context3);
Assert.assertSame(hdfsApi1_3,hdfsApi3_3);
}
Class: org.apache.ambari.view.pig.test.JobTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testKillJobWithRemove() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream);
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createStrictMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
data.id="job_id_##";
expect(api.runPigQuery((File)anyObject(),anyString(),eq("-useHCatalog"))).andReturn(data);
replay(api);
Response response=doCreateJob("Test","/tmp/script.pig","-useHCatalog",jobService);
Assert.assertEquals(201,response.getStatus());
reset(api);
api.killJob(eq("job_id_##"));
expect(api.checkJob(anyString())).andReturn(api.new JobInfo()).anyTimes();
replay(api);
JSONObject obj=(JSONObject)response.getEntity();
PigJob job=((PigJob)obj.get("job"));
response=jobService.killJob(job.getId(),"true");
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
jobService.getJob(job.getId());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testJobStatusFlow() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream);
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createNiceMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
data.id="job_id_#";
expect(api.runPigQuery((File)anyObject(),anyString(),eq("-useHCatalog"))).andReturn(data);
replay(api);
Response response=doCreateJob("Test","/tmp/script.pig","-useHCatalog",jobService);
Assert.assertEquals("-useHCatalog",do_stream.toString());
Assert.assertEquals(201,response.getStatus());
PigJob job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_SUBMITTED,job.getStatus());
Assert.assertTrue(job.isInProgress());
reset(api);
TempletonApi.JobInfo info=api.new JobInfo();
expect(api.checkJob(eq("job_id_#"))).andReturn(info);
replay(api);
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_SUBMITTED,job.getStatus());
reset(api);
info=api.new JobInfo();
info.status=new HashMap();
info.status.put("runState",(double)JobResourceManager.RUN_STATE_RUNNING);
info.percentComplete="30% complete";
expect(api.checkJob(eq("job_id_#"))).andReturn(info);
replay(api);
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_RUNNING,job.getStatus());
Assert.assertTrue(job.isInProgress());
Assert.assertEquals(30,(Object)job.getPercentComplete());
reset(api);
info=api.new JobInfo();
info.status=new HashMap();
info.status.put("runState",(double)JobResourceManager.RUN_STATE_SUCCEEDED);
expect(api.checkJob(eq("job_id_#"))).andReturn(info);
replay(api);
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_COMPLETED,job.getStatus());
Assert.assertFalse(job.isInProgress());
Assert.assertNull(job.getPercentComplete());
reset(api);
info=api.new JobInfo();
info.status=new HashMap();
info.status.put("runState",(double)JobResourceManager.RUN_STATE_PREP);
expect(api.checkJob(eq("job_id_#"))).andReturn(info);
replay(api);
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_RUNNING,job.getStatus());
reset(api);
info=api.new JobInfo();
info.status=new HashMap();
info.status.put("runState",(double)JobResourceManager.RUN_STATE_FAILED);
expect(api.checkJob(eq("job_id_#"))).andReturn(info);
replay(api);
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_FAILED,job.getStatus());
Assert.assertFalse(job.isInProgress());
reset(api);
info=api.new JobInfo();
info.status=new HashMap();
info.status.put("runState",(double)JobResourceManager.RUN_STATE_KILLED);
expect(api.checkJob(eq("job_id_#"))).andReturn(info);
replay(api);
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
job=((PigJob)((JSONObject)response.getEntity()).get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_KILLED,job.getStatus());
Assert.assertFalse(job.isInProgress());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testKillJobNoRemove() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream);
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createStrictMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
data.id="job_id_##";
expect(api.runPigQuery((File)anyObject(),anyString(),eq("-useHCatalog"))).andReturn(data);
replay(api);
Response response=doCreateJob("Test","/tmp/script.pig","-useHCatalog",jobService);
Assert.assertEquals(201,response.getStatus());
reset(api);
api.killJob(eq("job_id_##"));
expect(api.checkJob(anyString())).andReturn(api.new JobInfo()).anyTimes();
replay(api);
JSONObject obj=(JSONObject)response.getEntity();
PigJob job=((PigJob)obj.get("job"));
response=jobService.killJob(job.getId(),null);
Assert.assertEquals(204,response.getStatus());
response=jobService.getJob(job.getId());
Assert.assertEquals(200,response.getStatus());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSubmitJobNoArguments() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream);
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createNiceMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
expect(api.runPigQuery((File)anyObject(),anyString(),(String)isNull())).andReturn(data);
replay(api);
Response response=doCreateJob("Test","/tmp/script.pig",null,jobService);
Assert.assertEquals("",do_stream.toString());
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("job"));
Assert.assertNotNull(((PigJob)obj.get("job")).getId());
Assert.assertFalse(((PigJob)obj.get("job")).getId().isEmpty());
Assert.assertTrue(((PigJob)obj.get("job")).getStatusDir().startsWith("/tmp/.pigjobs/test"));
PigJob job=((PigJob)obj.get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_SUBMITTED,job.getStatus());
Assert.assertTrue(job.isInProgress());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier
@Test public void testSubmitJobUsernameProvided() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream);
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createNiceMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
expect(api.runPigQuery((File)anyObject(),anyString(),eq("-useHCatalog"))).andReturn(data);
replay(api);
properties.put("dataworker.username","luke");
Response response=doCreateJob("Test","/tmp/script.pig","-useHCatalog",jobService);
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("job"));
Assert.assertTrue(((PigJob)obj.get("job")).getStatusDir().startsWith("/tmp/.pigjobs/test"));
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testListJobs() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream).anyTimes();
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createNiceMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
expect(api.runPigQuery((File)anyObject(),anyString(),(String)isNull())).andReturn(data).anyTimes();
replay(api);
Response response=doCreateJob("Test","/tmp/script.pig",null,null,"x42",jobService);
Assert.assertEquals(201,response.getStatus());
response=doCreateJob("Test","/tmp/script.pig",null,null,"x42",jobService);
Assert.assertEquals(201,response.getStatus());
response=doCreateJob("Test","/tmp/script.pig",null,null,"100",jobService);
Assert.assertEquals(201,response.getStatus());
response=jobService.getJobList("x42");
Assert.assertEquals(200,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("jobs"));
Assert.assertEquals(2,((List)obj.get("jobs")).size());
response=jobService.getJobList(null);
Assert.assertEquals(200,response.getStatus());
obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("jobs"));
Assert.assertTrue(((List)obj.get("jobs")).size() > 2);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSubmitJob() throws Exception {
HdfsApi hdfsApi=createNiceMock(HdfsApi.class);
hdfsApi.copy(eq("/tmp/script.pig"),startsWith("/tmp/.pigjobs/"));
ByteArrayOutputStream do_stream=new ByteArrayOutputStream();
FSDataOutputStream stream=new FSDataOutputStream(do_stream);
expect(hdfsApi.create(anyString(),eq(true))).andReturn(stream);
replay(hdfsApi);
UserLocalObjects.setHdfsApi(hdfsApi,context);
TempletonApi api=createNiceMock(TempletonApi.class);
UserLocalObjects.setTempletonApi(api,context);
TempletonApi.JobData data=api.new JobData();
expect(api.runPigQuery((File)anyObject(),anyString(),eq("-useHCatalog"))).andReturn(data);
replay(api);
Response response=doCreateJob("Test","/tmp/script.pig","-useHCatalog",jobService);
Assert.assertEquals("-useHCatalog",do_stream.toString());
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("job"));
Assert.assertNotNull(((PigJob)obj.get("job")).getId());
Assert.assertFalse(((PigJob)obj.get("job")).getId().isEmpty());
Assert.assertTrue(((PigJob)obj.get("job")).getStatusDir().startsWith("/tmp/.pigjobs/test"));
PigJob job=((PigJob)obj.get("job"));
Assert.assertEquals(PigJob.PIG_JOB_STATE_SUBMITTED,job.getStatus());
Assert.assertTrue(job.isInProgress());
}
Class: org.apache.ambari.view.pig.test.ScriptTest InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createScript(){
Response response=doCreateScript();
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("script"));
Assert.assertNotNull(((PigScript)obj.get("script")).getId());
Assert.assertFalse(((PigScript)obj.get("script")).getId().isEmpty());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void updateScript(){
Response createdScript=doCreateScript();
String createdScriptId=((PigScript)((JSONObject)createdScript.getEntity()).get("script")).getId();
ScriptService.PigScriptRequest request=new ScriptService.PigScriptRequest();
request.script=new PigScript();
request.script.setTitle("Updated Script");
Response response=scriptService.updateScript(request,createdScriptId);
Assert.assertEquals(204,response.getStatus());
Response response2=scriptService.getScript(createdScriptId);
Assert.assertEquals(200,response2.getStatus());
JSONObject obj=((JSONObject)response2.getEntity());
Assert.assertTrue(obj.containsKey("script"));
Assert.assertEquals(((PigScript)obj.get("script")).getTitle(),request.script.getTitle());
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void listScripts(){
Response createdScript1=doCreateScript("Title 1","/path/to/file.pig");
Response createdScript2=doCreateScript("Title 2","/path/to/file.pig");
String createdScriptId=((PigScript)((JSONObject)createdScript1.getEntity()).get("script")).getId();
Response response=scriptService.getScriptList();
Assert.assertEquals(200,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("scripts"));
List scripts=(List)obj.get("scripts");
boolean containsTitle=false;
for ( PigScript script : scripts) containsTitle=containsTitle || script.getTitle().compareTo("Title 1") == 0;
Assert.assertTrue(containsTitle);
containsTitle=false;
for ( PigScript script : scripts) containsTitle=containsTitle || script.getTitle().compareTo("Title 2") == 0;
Assert.assertTrue(containsTitle);
}
InternalCallVerifier EqualityVerifier
@Test public void deleteScript(){
Response createdScript=doCreateScript();
String createdScriptId=((PigScript)((JSONObject)createdScript.getEntity()).get("script")).getId();
Response response=scriptService.deleteScript(createdScriptId);
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
scriptService.getScript(createdScriptId);
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createScriptAutoCreate(){
Response response=doCreateScript("Test",null);
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("script"));
Assert.assertNotNull(((PigScript)obj.get("script")).getId());
Assert.assertFalse(((PigScript)obj.get("script")).getId().isEmpty());
Assert.assertFalse(((PigScript)obj.get("script")).getPigScript().isEmpty());
}
Class: org.apache.ambari.view.pig.test.ScriptTestHDFSUnmanaged InternalCallVerifier BooleanVerifier
@Test public void createScriptAutoCreateUsername() throws IOException, InterruptedException {
Map properties=new HashMap();
baseDir=new File(DATA_DIRECTORY).getAbsoluteFile();
pigStorageFile=new File("./target/BasePigTest/storage.dat").getAbsoluteFile();
properties.put("dataworker.storagePath",pigStorageFile.toString());
properties.put("scripts.dir","/tmp/.pigscripts");
properties.put("webhdfs.url",hdfsURI);
expect(context.getProperties()).andReturn(properties).anyTimes();
expect(context.getUsername()).andReturn("ambari-qa").anyTimes();
replay(handler,context);
scriptService=getService(ScriptService.class,handler,context);
Response createdScript=doCreateScript("Test",null);
String createdScriptPath=((PigScript)((JSONObject)createdScript.getEntity()).get("script")).getPigScript();
Assert.assertTrue(createdScriptPath.startsWith("/tmp/.pigscripts/"));
properties.put("dataworker.username","luke");
Response createdScript2=doCreateScript("Test",null);
String createdScriptPath2=((PigScript)((JSONObject)createdScript2.getEntity()).get("script")).getPigScript();
Assert.assertTrue(createdScriptPath2.startsWith("/tmp/.pigscripts/"));
}
Class: org.apache.ambari.view.pig.test.UDFTest InternalCallVerifier EqualityVerifier
@Test public void deleteUDF(){
Response createdUDF=doCreateUDF();
String createdUdfId=((UDF)((JSONObject)createdUDF.getEntity()).get("udf")).getId();
Response response=udfService.deleteUDF(createdUdfId);
Assert.assertEquals(204,response.getStatus());
thrown.expect(NotFoundFormattedException.class);
udfService.getUDF(createdUdfId);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void updateUDF(){
Response createdUDF=doCreateUDF();
String createdUdfId=((UDF)((JSONObject)createdUDF.getEntity()).get("udf")).getId();
UDFService.UDFRequest request=new UDFService.UDFRequest();
request.udf=new UDF();
request.udf.setPath("/tmp/updatedUDF.jar");
request.udf.setName("TestUDF2");
Response response=udfService.updateUDF(request,createdUdfId);
Assert.assertEquals(204,response.getStatus());
Response response2=udfService.getUDF(createdUdfId);
Assert.assertEquals(200,response2.getStatus());
JSONObject obj=((JSONObject)response2.getEntity());
Assert.assertTrue(obj.containsKey("udf"));
Assert.assertEquals(((UDF)obj.get("udf")).getName(),request.udf.getName());
Assert.assertEquals(((UDF)obj.get("udf")).getPath(),request.udf.getPath());
}
InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void createUDF(){
Response response=doCreateUDF();
Assert.assertEquals(201,response.getStatus());
JSONObject obj=(JSONObject)response.getEntity();
Assert.assertTrue(obj.containsKey("udf"));
Assert.assertNotNull(((UDF)obj.get("udf")).getId());
Assert.assertFalse(((UDF)obj.get("udf")).getId().isEmpty());
}
Class: org.apache.ambari.view.slider.rest.client.SliderAppMasterClientTest InternalCallVerifier EqualityVerifier
@Test public void testMetricMatchers() throws Exception {
Metric m1=new Metric("a_b.c",true,false);
Assert.assertEquals(m1.getJmxBeanKeyName(),"a_b");
List> matchers=m1.getMatchers();
Assert.assertEquals(matchers.size(),1);
Assert.assertEquals(matchers.get(0).size(),1);
Assert.assertEquals(matchers.get(0).get(0),"c");
m1=new Metric("a_b.c.d",true,false);
Assert.assertEquals(m1.getJmxBeanKeyName(),"a_b");
matchers=m1.getMatchers();
Assert.assertEquals(matchers.size(),2);
Assert.assertEquals(matchers.get(0).size(),2);
Assert.assertEquals(matchers.get(0).get(0),"c");
Assert.assertEquals(matchers.get(0).get(1),"d");
Assert.assertEquals(matchers.get(1).size(),1);
Assert.assertEquals(matchers.get(1).get(0),"c.d");
m1=new Metric("a_b.c.d.e",true,false);
Assert.assertEquals(m1.getJmxBeanKeyName(),"a_b");
matchers=m1.getMatchers();
Assert.assertEquals(matchers.size(),4);
Assert.assertEquals(matchers.get(0).size(),3);
Assert.assertEquals(matchers.get(0).get(1),"d");
Assert.assertEquals(matchers.get(0).get(2),"e");
Assert.assertEquals(matchers.get(2).size(),2);
Assert.assertEquals(matchers.get(2).get(0),"c.d");
Assert.assertEquals(matchers.get(2).get(1),"e");
Assert.assertEquals(matchers.get(3).size(),1);
Assert.assertEquals(matchers.get(3).get(0),"c.d.e");
}
Class: org.apache.ambari.view.utils.ViewUserLocalTest InternalCallVerifier IdentityVerifier
@Test public void testDifferentUsers() throws Exception {
ViewContext viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getInstanceName()).andReturn("INSTANCE1").anyTimes();
expect(viewContext.getUsername()).andReturn("luke").anyTimes();
ViewContext viewContext2=createNiceMock(ViewContext.class);
expect(viewContext2.getInstanceName()).andReturn("INSTANCE1").anyTimes();
expect(viewContext2.getUsername()).andReturn("leia").anyTimes();
replay(viewContext,viewContext2);
UserLocal test=new UserLocal(Object.class){
@Override protected synchronized Object initialValue( ViewContext context){
return new Object();
}
}
;
Object obj1=test.get(viewContext);
Object obj2=test.get(viewContext2);
assertNotSame(obj1,obj2);
}
InternalCallVerifier IdentityVerifier
@Test public void testSameUsers() throws Exception {
ViewContext viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getInstanceName()).andReturn("INSTANCE1").anyTimes();
expect(viewContext.getUsername()).andReturn("luke").anyTimes();
ViewContext viewContext2=createNiceMock(ViewContext.class);
expect(viewContext2.getInstanceName()).andReturn("INSTANCE1").anyTimes();
expect(viewContext2.getUsername()).andReturn("luke").anyTimes();
replay(viewContext,viewContext2);
UserLocal test=new UserLocal(Object.class){
@Override protected synchronized Object initialValue( ViewContext context){
return new Object();
}
}
;
Object obj1=test.get(viewContext);
Object obj2=test.get(viewContext2);
assertSame(obj1,obj2);
}
InternalCallVerifier IdentityVerifier
@Test public void testDifferentInstances() throws Exception {
ViewContext viewContext=createNiceMock(ViewContext.class);
expect(viewContext.getInstanceName()).andReturn("INSTANCE1").anyTimes();
expect(viewContext.getUsername()).andReturn("luke").anyTimes();
ViewContext viewContext2=createNiceMock(ViewContext.class);
expect(viewContext2.getInstanceName()).andReturn("INSTANCE2").anyTimes();
expect(viewContext2.getUsername()).andReturn("luke").anyTimes();
replay(viewContext,viewContext2);
UserLocal test=new UserLocal(Object.class){
@Override protected synchronized Object initialValue( ViewContext context){
return new Object();
}
}
;
Object obj1=test.get(viewContext);
Object obj2=test.get(viewContext2);
assertNotSame(obj1,obj2);
}
Class: org.apache.ambari.view.utils.ambari.RemoteClusterTest InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetRemoteClusterThatIsPresent() throws Exception {
ViewContext viewContext=createNiceMock(ViewContext.class);
Map instanceProperties=new HashMap();
instanceProperties.put(AmbariApi.AMBARI_SERVER_URL_INSTANCE_PROPERTY,AMBARI_CLUSTER_REST_URL);
instanceProperties.put(AmbariApi.AMBARI_SERVER_USERNAME_INSTANCE_PROPERTY,"admin");
instanceProperties.put(AmbariApi.AMBARI_SERVER_PASSWORD_INSTANCE_PROPERTY,"admin");
expect(viewContext.getProperties()).andReturn(instanceProperties).anyTimes();
replay(viewContext);
AmbariApi ambariApi=new AmbariApi(viewContext);
Cluster cluster=ambariApi.getRemoteCluster();
assertNotNull(cluster);
assertEquals(cluster.getName(),"c1");
}
InternalCallVerifier NullVerifier
@Test public void testGetRemoteClusterThatIsNotPresent() throws Exception {
ViewContext viewContext=createNiceMock(ViewContext.class);
Map instanceProperties=new HashMap();
expect(viewContext.getProperties()).andReturn(instanceProperties).anyTimes();
replay(viewContext);
AmbariApi ambariApi=new AmbariApi(viewContext);
Cluster cluster=ambariApi.getRemoteCluster();
assertNull(cluster);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetConfigurationValue() throws Exception {
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
final String desiredConfigsString="{\"Clusters\": {\"desired_configs\": {\"test-site\": {\"tag\": \"TAG\"}}}}";
final String configurationString="{\"items\": [{\"properties\": {\"test.property.name\": \"test property value\"}}]}";
final int[] desiredConfigPolls={0};
final int[] testConfigPolls={0};
expect(urlStreamProvider.readFrom(eq(AMBARI_CLUSTER_REST_URL + "?fields=services/ServiceInfo,hosts,Clusters"),eq("GET"),(String)isNull(),(Map)anyObject())).andAnswer(new IAnswer(){
@Override public InputStream answer() throws Throwable {
desiredConfigPolls[0]+=1;
return new ByteArrayInputStream(desiredConfigsString.getBytes());
}
}
).anyTimes();
expect(urlStreamProvider.readFrom(eq(AMBARI_CLUSTER_REST_URL + "/configurations?(type=test-site&tag=TAG)"),eq("GET"),(String)isNull(),(Map)anyObject())).andAnswer(new IAnswer(){
@Override public InputStream answer() throws Throwable {
testConfigPolls[0]+=1;
return new ByteArrayInputStream(configurationString.getBytes());
}
}
).anyTimes();
replay(urlStreamProvider);
RemoteCluster cluster=new RemoteCluster(AMBARI_CLUSTER_REST_URL,urlStreamProvider);
PassiveExpiringMap cache=new PassiveExpiringMap(10000L);
cluster.configurationCache=cache;
String value=cluster.getConfigurationValue("test-site","test.property.name");
assertEquals(value,"test property value");
assertEquals(desiredConfigPolls[0],1);
assertEquals(testConfigPolls[0],1);
value=cluster.getConfigurationValue("test-site","test.property.name");
assertEquals(value,"test property value");
assertEquals(desiredConfigPolls[0],1);
assertEquals(testConfigPolls[0],1);
cache.clear();
value=cluster.getConfigurationValue("test-site","test.property.name");
assertEquals(value,"test property value");
assertEquals(desiredConfigPolls[0],2);
assertEquals(testConfigPolls[0],2);
}
Class: org.apache.ambari.view.utils.ambari.ServicesTest InternalCallVerifier EqualityVerifier
@Test public void shouldConnectToDefaultHostPortInClusterModeWhenWebaddressConfigIsEmpty() throws Exception {
ViewContext viewContext=getViewContext(new HashMap());
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
Cluster cluster=createNiceMock(Cluster.class);
expect(ambariApi.isClusterAssociated()).andReturn(true).anyTimes();
setClusterExpectationWithEmptyWebappConfig(cluster,"HTTP_ONLY");
expect(ambariApi.getCluster()).andReturn(cluster).anyTimes();
Services services=new Services(ambariApi,viewContext);
replayAll();
assertEquals("http://" + RM_URL1_HOST + ":8088",services.getRMUrl());
reset(cluster);
setClusterExpectationWithEmptyWebappConfig(cluster,"HTTPS_ONLY");
replay(cluster);
assertEquals("https://" + RM_URL1_HOST + ":8090",services.getRMUrl());
}
InternalCallVerifier EqualityVerifier
@Test public void shouldReturnATSUrlFromYarnSiteInClusteredMode() throws Exception {
ViewContext viewContext=getViewContext(new HashMap());
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
Cluster cluster=createNiceMock(Cluster.class);
Services services=new Services(ambariApi,viewContext);
expect(ambariApi.isClusterAssociated()).andReturn(true).anyTimes();
setClusterExpectation(cluster,"HTTP_ONLY");
expect(ambariApi.getCluster()).andReturn(cluster).anyTimes();
replayAll();
assertEquals(HTTP_RM_URL1,services.getTimelineServerUrl());
reset(cluster);
setClusterExpectation(cluster,"HTTPS_ONLY");
replay(cluster);
assertEquals(HTTPS_RM_URL2,services.getTimelineServerUrl());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void shouldReturnUrlIfSingleIsConfiguredInCustomConfig(){
Map map=new HashMap<>();
map.put("yarn.resourcemanager.url",HTTP_RM_URL1);
ViewContext viewContext=getViewContext(map);
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
expect(ambariApi.isClusterAssociated()).andReturn(false);
replay(viewContext);
Services services=new Services(ambariApi,viewContext);
assertEquals(HTTP_RM_URL1,services.getRMUrl());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void shouldReturnActiveRMUrlWhenConnectingToStandby() throws Exception {
Map map=new HashMap<>();
map.put("yarn.resourcemanager.url",HTTP_RM_URL1 + ", " + HTTP_RM_URL2);
ViewContext viewContext=getViewContext(map);
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
InputStream inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"STANDBY\"}}");
expect(ambariApi.isClusterAssociated()).andReturn(false);
expect(viewContext.getURLStreamProvider()).andReturn(urlStreamProvider).anyTimes();
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
InputStream inputStreamActive=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL2 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStreamActive);
replayAll();
Services services=new Services(ambariApi,viewContext);
assertEquals(HTTP_RM_URL2,services.getRMUrl());
verify(urlStreamProvider);
}
InternalCallVerifier EqualityVerifier
@Test public void shouldFetchRMUrlsWhileHAEnabledInClusterMode() throws Exception {
ViewContext viewContext=getViewContext(new HashMap());
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
Cluster cluster=createNiceMock(Cluster.class);
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
Services services=new Services(ambariApi,viewContext);
InputStream inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(ambariApi.isClusterAssociated()).andReturn(true).anyTimes();
setClusterExpectationInHA(cluster,"HTTP_ONLY");
expect(ambariApi.getCluster()).andReturn(cluster).anyTimes();
expect(viewContext.getURLStreamProvider()).andReturn(urlStreamProvider).anyTimes();
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replayAll();
assertEquals(HTTP_RM_URL1,services.getRMUrl());
reset(cluster,urlStreamProvider);
setClusterExpectationInHA(cluster,"HTTP_ONLY");
inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andThrow(new IOException());
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL2 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replay(cluster,urlStreamProvider);
assertEquals(HTTP_RM_URL2,services.getRMUrl());
reset(cluster,urlStreamProvider);
setClusterExpectationInHA(cluster,"HTTPS_ONLY");
inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(urlStreamProvider.readFrom(eq(HTTPS_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replay(cluster,urlStreamProvider);
assertEquals(HTTPS_RM_URL1,services.getRMUrl());
reset(cluster,urlStreamProvider);
setClusterExpectationInHA(cluster,"HTTPS_ONLY");
inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(urlStreamProvider.readFrom(eq(HTTPS_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andThrow(new IOException());
expect(urlStreamProvider.readFrom(eq(HTTPS_RM_URL2 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replay(cluster,urlStreamProvider);
assertEquals(HTTPS_RM_URL2,services.getRMUrl());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void shouldConnectToFirstUrlWhenMultipleRMUrlIsConfiguredInCustomConfig() throws IOException {
Map map=new HashMap<>();
map.put("yarn.resourcemanager.url",HTTP_RM_URL1 + ", " + HTTP_RM_URL2);
ViewContext viewContext=getViewContext(map);
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
InputStream inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(ambariApi.isClusterAssociated()).andReturn(false);
expect(viewContext.getURLStreamProvider()).andReturn(urlStreamProvider);
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replayAll();
Services services=new Services(ambariApi,viewContext);
assertEquals(HTTP_RM_URL1,services.getRMUrl());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void shouldConnectToSecondUrlWhenTheFirstURLTimesOut() throws Exception {
Map map=new HashMap<>();
map.put("yarn.resourcemanager.url",HTTP_RM_URL1 + ", " + HTTP_RM_URL2);
ViewContext viewContext=getViewContext(map);
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
InputStream inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(ambariApi.isClusterAssociated()).andReturn(false);
expect(viewContext.getURLStreamProvider()).andReturn(urlStreamProvider).anyTimes();
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL1 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andThrow(new IOException());
expect(urlStreamProvider.readFrom(eq(HTTP_RM_URL2 + RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replayAll();
Services services=new Services(ambariApi,viewContext);
assertEquals(HTTP_RM_URL2,services.getRMUrl());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void shouldReturnATSUrlConfiguredInCustomMode() throws Exception {
Map map=new HashMap<>();
map.put("yarn.timeline-server.url",HTTP_RM_URL1);
ViewContext viewContext=getViewContext(map);
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
expect(ambariApi.isClusterAssociated()).andReturn(false);
replay(viewContext);
Services services=new Services(ambariApi,viewContext);
assertEquals(HTTP_RM_URL1,services.getTimelineServerUrl());
}
InternalCallVerifier EqualityVerifier
@Test public void shouldConnectToDefaultHostPortInClusterModeWithHAWhenWebaddressConfigIsEmpty() throws Exception {
ViewContext viewContext=getViewContext(new HashMap());
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
Cluster cluster=createNiceMock(Cluster.class);
URLStreamProvider urlStreamProvider=createNiceMock(URLStreamProvider.class);
expect(ambariApi.isClusterAssociated()).andReturn(true).anyTimes();
setClusterExpectationInHAWithEmptyWebappConfig(cluster,"HTTP_ONLY");
expect(ambariApi.getCluster()).andReturn(cluster).anyTimes();
Services services=new Services(ambariApi,viewContext);
InputStream inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(viewContext.getURLStreamProvider()).andReturn(urlStreamProvider).anyTimes();
expect(urlStreamProvider.readFrom(eq("http://" + RM_URL1_HOST + ":8088"+ RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replayAll();
assertEquals("http://" + RM_URL1_HOST + ":8088",services.getRMUrl());
reset(cluster,urlStreamProvider);
setClusterExpectationInHAWithEmptyWebappConfig(cluster,"HTTPS_ONLY");
inputStream=IOUtils.toInputStream("{\"clusterInfo\": {\"haState\": \"ACTIVE\"}}");
expect(urlStreamProvider.readFrom(eq("https://" + RM_URL1_HOST + ":8090"+ RM_INFO_API_ENDPOINT),eq("GET"),anyString(),EasyMock.>anyObject())).andReturn(inputStream);
replay(cluster,urlStreamProvider);
assertEquals("https://" + RM_URL1_HOST + ":8090",services.getRMUrl());
}
InternalCallVerifier EqualityVerifier
@Test public void shouldConnectToRMConfiguredInClusterMode() throws Exception {
ViewContext viewContext=getViewContext(new HashMap());
AmbariApi ambariApi=createNiceMock(AmbariApi.class);
Cluster cluster=createNiceMock(Cluster.class);
expect(ambariApi.isClusterAssociated()).andReturn(true).anyTimes();
setClusterExpectation(cluster,"HTTP_ONLY");
expect(ambariApi.getCluster()).andReturn(cluster).anyTimes();
replayAll();
Services services=new Services(ambariApi,viewContext);
assertEquals(HTTP_RM_URL1,services.getRMUrl());
reset(cluster);
setClusterExpectation(cluster,"HTTPS_ONLY");
replay(cluster);
assertEquals(HTTPS_RM_URL2,services.getRMUrl());
reset(cluster);
setClusterExpectation(cluster,"HTTPS_ONLY_XYZ");
replay(cluster);
assertEquals(HTTP_RM_URL1,services.getRMUrl());
}
Class: org.apache.hadoop.metrics2.sink.SqlServerSinkTest InternalCallVerifier EqualityVerifier
@Test public void testGetMetricRecordID() throws Exception {
SubsetConfiguration configuration=createNiceMock(SubsetConfiguration.class);
Connection connection=createNiceMock(Connection.class);
CallableStatement cstmt=createNiceMock(CallableStatement.class);
expect(configuration.getParent()).andReturn(null);
expect(configuration.getPrefix()).andReturn("prefix");
expect(configuration.getString("databaseUrl")).andReturn("url");
expect(connection.prepareCall("{call dbo.uspGetMetricRecord(?, ?, ?, ?, ?, ?, ?, ?, ?)}")).andReturn(cstmt);
cstmt.setNString(1,"context");
cstmt.setNString(2,"typeName");
cstmt.setNString(3,"nodeName");
cstmt.setNString(4,"ip");
cstmt.setNString(5,"clusterName");
cstmt.setNString(6,"serviceName");
cstmt.setNString(7,"tagPairs");
cstmt.setLong(8,9999L);
cstmt.registerOutParameter(9,java.sql.Types.BIGINT);
expect(cstmt.execute()).andReturn(true);
expect(cstmt.getLong(9)).andReturn(99L);
expect(cstmt.wasNull()).andReturn(false);
replay(configuration,connection,cstmt);
SqlServerSink sink=createInstance();
sink.init(configuration);
SQLServerDriver.setConnection(connection);
Assert.assertEquals(99,sink.getMetricRecordID("context","typeName","nodeName","ip","clusterName","serviceName","tagPairs",9999L));
verify(configuration,connection,cstmt);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetMetricRecordID_nullReturn() throws Exception {
SubsetConfiguration configuration=createNiceMock(SubsetConfiguration.class);
Connection connection=createNiceMock(Connection.class);
CallableStatement cstmt=createNiceMock(CallableStatement.class);
expect(configuration.getParent()).andReturn(null);
expect(configuration.getPrefix()).andReturn("prefix");
expect(configuration.getString("databaseUrl")).andReturn("url");
expect(connection.prepareCall("{call dbo.uspGetMetricRecord(?, ?, ?, ?, ?, ?, ?, ?, ?)}")).andReturn(cstmt);
cstmt.setNString(1,"context");
cstmt.setNString(2,"typeName");
cstmt.setNString(3,"nodeName");
cstmt.setNString(4,"ip");
cstmt.setNString(5,"clusterName");
cstmt.setNString(6,"serviceName");
cstmt.setNString(7,"tagPairs");
cstmt.setLong(8,9999L);
cstmt.registerOutParameter(9,java.sql.Types.BIGINT);
expect(cstmt.execute()).andReturn(true);
expect(cstmt.getLong(9)).andReturn(99L);
expect(cstmt.wasNull()).andReturn(true);
replay(configuration,connection,cstmt);
SqlServerSink sink=createInstance();
sink.init(configuration);
SQLServerDriver.setConnection(connection);
Assert.assertEquals(-1,sink.getMetricRecordID("context","typeName","nodeName","ip","clusterName","serviceName","tagPairs",9999L));
verify(configuration,connection,cstmt);
}
InternalCallVerifier BooleanVerifier
@Test public void testEnsureConnection() throws Exception {
SubsetConfiguration configuration=createNiceMock(SubsetConfiguration.class);
Connection connection=createNiceMock(Connection.class);
expect(configuration.getParent()).andReturn(null);
expect(configuration.getPrefix()).andReturn("prefix");
expect(configuration.getString("databaseUrl")).andReturn("url");
replay(configuration,connection);
SqlServerSink sink=createInstance();
sink.init(configuration);
Assert.assertTrue(sink.ensureConnection());
SQLServerDriver.setConnection(connection);
Assert.assertTrue(sink.ensureConnection());
verify(configuration,connection);
}
Class: org.apache.hadoop.metrics2.sink.kafka.KafkaTimelineMetricsReporterTest InternalCallVerifier BooleanVerifier
@Test public void testMetricsExclusionPolicy() throws Exception {
mockStatic(Metrics.class);
EasyMock.expect(Metrics.defaultRegistry()).andReturn(registry).times(2);
TimelineMetricsCache timelineMetricsCache=getTimelineMetricsCache(kafkaTimelineMetricsReporter);
kafkaTimelineMetricsReporter.setMetricsCache(timelineMetricsCache);
replay(Metrics.class,timelineMetricsCache);
kafkaTimelineMetricsReporter.init(props);
Assert.assertTrue(kafkaTimelineMetricsReporter.isExcludedMetric("a.b.c"));
Assert.assertFalse(kafkaTimelineMetricsReporter.isExcludedMetric("a.b"));
Assert.assertFalse(kafkaTimelineMetricsReporter.isExcludedMetric("a.b.c.d"));
Assert.assertFalse(kafkaTimelineMetricsReporter.isExcludedMetric("a.b.c.d.e"));
kafkaTimelineMetricsReporter.stopReporter();
verifyAll();
}
Class: org.apache.hadoop.metrics2.sink.timeline.HadoopTimelineMetricsSinkTest APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDuplicateTimeSeriesNotSaved() throws Exception {
HadoopTimelineMetricsSink sink=createMockBuilder(HadoopTimelineMetricsSink.class).withConstructor().addMockedMethod("appendPrefix").addMockedMethod("emitMetrics").createNiceMock();
SubsetConfiguration conf=createNiceMock(SubsetConfiguration.class);
expect(conf.getString(eq("slave.host.name"))).andReturn("testhost").anyTimes();
expect(conf.getParent()).andReturn(null).anyTimes();
expect(conf.getPrefix()).andReturn("service").anyTimes();
expect(conf.getString(eq(COLLECTOR_HOST_PROPERTY))).andReturn("localhost:63188").anyTimes();
expect(conf.getString(eq("serviceName-prefix"),eq(""))).andReturn("").anyTimes();
expect(conf.getInt(eq(MAX_METRIC_ROW_CACHE_SIZE),anyInt())).andReturn(10).anyTimes();
expect(conf.getInt(eq(METRICS_SEND_INTERVAL),anyInt())).andReturn(10).anyTimes();
conf.setListDelimiter(eq(','));
expectLastCall().anyTimes();
expect(conf.getKeys()).andReturn(new Iterator(){
@Override public boolean hasNext(){
return false;
}
@Override public Object next(){
return null;
}
@Override public void remove(){
}
}
).once();
AbstractMetric metric=createNiceMock(AbstractMetric.class);
expect(metric.name()).andReturn("metricName").anyTimes();
expect(metric.value()).andReturn(1.0).once();
expect(metric.value()).andReturn(2.0).once();
expect(metric.value()).andReturn(3.0).once();
expect(metric.value()).andReturn(4.0).once();
expect(metric.value()).andReturn(5.0).once();
expect(metric.value()).andReturn(6.0).once();
MetricsRecord record=createNiceMock(MetricsRecord.class);
expect(record.name()).andReturn("testName").anyTimes();
expect(record.context()).andReturn("testContext").anyTimes();
sink.appendPrefix(eq(record),(StringBuilder)anyObject());
expectLastCall().anyTimes().andStubAnswer(new IAnswer(){
@Override public Object answer() throws Throwable {
return null;
}
}
);
final Long now=System.currentTimeMillis();
expect(record.timestamp()).andReturn(now).times(2);
expect(record.timestamp()).andReturn(now + 100l).times(2);
expect(record.timestamp()).andReturn(now + 200l).once();
expect(record.timestamp()).andReturn(now + 300l).once();
expect(record.metrics()).andReturn(Arrays.asList(metric)).anyTimes();
final List capturedMetrics=new ArrayList();
sink.emitMetrics((TimelineMetrics)anyObject());
expectLastCall().andStubAnswer(new IAnswer(){
@Override public Object answer() throws Throwable {
capturedMetrics.add((TimelineMetrics)EasyMock.getCurrentArguments()[0]);
return null;
}
}
);
replay(conf,sink,record,metric);
sink.init(conf);
sink.putMetrics(record);
sink.putMetrics(record);
sink.putMetrics(record);
sink.putMetrics(record);
sink.putMetrics(record);
sink.putMetrics(record);
verify(conf,sink,record,metric);
Assert.assertEquals(2,capturedMetrics.size());
Iterator metricsIterator=capturedMetrics.iterator();
TimelineMetric timelineMetric1=metricsIterator.next().getMetrics().get(0);
Assert.assertEquals(2,timelineMetric1.getMetricValues().size());
Iterator timestamps=timelineMetric1.getMetricValues().keySet().iterator();
Assert.assertEquals(now,timestamps.next());
Assert.assertEquals(new Long(now + 100l),timestamps.next());
Iterator values=timelineMetric1.getMetricValues().values().iterator();
Assert.assertEquals(new Double(1.0),values.next());
Assert.assertEquals(new Double(3.0),values.next());
TimelineMetric timelineMetric2=metricsIterator.next().getMetrics().get(0);
Assert.assertEquals(2,timelineMetric2.getMetricValues().size());
timestamps=timelineMetric2.getMetricValues().keySet().iterator();
Assert.assertEquals(new Long(now + 200l),timestamps.next());
Assert.assertEquals(new Long(now + 300l),timestamps.next());
values=timelineMetric2.getMetricValues().values().iterator();
Assert.assertEquals(new Double(5.0),values.next());
Assert.assertEquals(new Double(6.0),values.next());
}
Class: org.apache.hadoop.metrics2.sink.timeline.cache.TimelineMetricsCacheTest InternalCallVerifier EqualityVerifier
@Test public void testPutGetCounterTimelineMetric() throws Exception {
TimelineMetric metric=createTimelineMetric(new TreeMap(){
{
put(1L,10.0);
}
}
,DEFAULT_START_TIME);
timelineMetricsCache.putTimelineMetric(metric,true);
metric=createTimelineMetric(new TreeMap(){
{
put(2L,10.0);
put(3L,20.0);
put(4L,30.0);
}
}
,DEFAULT_START_TIME + 2 * TimelineMetricsCache.MAX_EVICTION_TIME_MILLIS);
timelineMetricsCache.putTimelineMetric(metric,true);
TimelineMetric cachedMetric=timelineMetricsCache.getTimelineMetric(METRIC_NAME);
assertEquals(0,cachedMetric.getMetricValues().get(1L),delta);
assertEquals(0,cachedMetric.getMetricValues().get(2L),delta);
assertEquals(10,cachedMetric.getMetricValues().get(3L),delta);
assertEquals(10,cachedMetric.getMetricValues().get(4L),delta);
metric=createTimelineMetric(new TreeMap(){
{
put(5L,100.0);
put(6L,120.0);
put(7L,230.0);
}
}
,DEFAULT_START_TIME + 3 * TimelineMetricsCache.MAX_EVICTION_TIME_MILLIS);
timelineMetricsCache.putTimelineMetric(metric,true);
metric=createTimelineMetric(new TreeMap(){
{
put(8L,300.0);
}
}
,DEFAULT_START_TIME + 5 * TimelineMetricsCache.MAX_EVICTION_TIME_MILLIS);
timelineMetricsCache.putTimelineMetric(metric,true);
cachedMetric=timelineMetricsCache.getTimelineMetric(METRIC_NAME);
assertEquals(70,cachedMetric.getMetricValues().get(5L),delta);
assertEquals(20,cachedMetric.getMetricValues().get(6L),delta);
assertEquals(110,cachedMetric.getMetricValues().get(7L),delta);
assertEquals(70,cachedMetric.getMetricValues().get(8L),delta);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.TestApplicationHistoryClientService APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testApplicationAttemptReport() throws IOException, YarnException {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
writeApplicationAttemptStartData(appAttemptId);
writeApplicationAttemptFinishData(appAttemptId);
GetApplicationAttemptReportRequest request=GetApplicationAttemptReportRequest.newInstance(appAttemptId);
GetApplicationAttemptReportResponse response=historyServer.getClientService().getClientHandler().getApplicationAttemptReport(request);
ApplicationAttemptReport attemptReport=response.getApplicationAttemptReport();
Assert.assertNotNull(attemptReport);
Assert.assertEquals("appattempt_0_0001_000001",attemptReport.getApplicationAttemptId().toString());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testApplications() throws IOException, YarnException {
ApplicationId appId=null;
appId=ApplicationId.newInstance(0,1);
writeApplicationStartData(appId);
writeApplicationFinishData(appId);
ApplicationId appId1=ApplicationId.newInstance(0,2);
writeApplicationStartData(appId1);
writeApplicationFinishData(appId1);
GetApplicationsRequest request=GetApplicationsRequest.newInstance();
GetApplicationsResponse response=historyServer.getClientService().getClientHandler().getApplications(request);
List appReport=response.getApplicationList();
Assert.assertNotNull(appReport);
Assert.assertEquals(appId,appReport.get(0).getApplicationId());
Assert.assertEquals(appId1,appReport.get(1).getApplicationId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testApplicationAttempts() throws IOException, YarnException {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
ApplicationAttemptId appAttemptId1=ApplicationAttemptId.newInstance(appId,2);
writeApplicationAttemptStartData(appAttemptId);
writeApplicationAttemptFinishData(appAttemptId);
writeApplicationAttemptStartData(appAttemptId1);
writeApplicationAttemptFinishData(appAttemptId1);
GetApplicationAttemptsRequest request=GetApplicationAttemptsRequest.newInstance(appId);
GetApplicationAttemptsResponse response=historyServer.getClientService().getClientHandler().getApplicationAttempts(request);
List attemptReports=response.getApplicationAttemptList();
Assert.assertNotNull(attemptReports);
Assert.assertEquals(appAttemptId,attemptReports.get(0).getApplicationAttemptId());
Assert.assertEquals(appAttemptId1,attemptReports.get(1).getApplicationAttemptId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testContainers() throws IOException, YarnException {
ApplicationId appId=ApplicationId.newInstance(0,1);
writeApplicationStartData(appId);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
ContainerId containerId=ContainerId.newInstance(appAttemptId,1);
ContainerId containerId1=ContainerId.newInstance(appAttemptId,2);
writeContainerStartData(containerId);
writeContainerFinishData(containerId);
writeContainerStartData(containerId1);
writeContainerFinishData(containerId1);
writeApplicationFinishData(appId);
GetContainersRequest request=GetContainersRequest.newInstance(appAttemptId);
GetContainersResponse response=historyServer.getClientService().getClientHandler().getContainers(request);
List containers=response.getContainerList();
Assert.assertNotNull(containers);
Assert.assertEquals(containerId,containers.get(1).getContainerId());
Assert.assertEquals(containerId1,containers.get(0).getContainerId());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testApplicationReport() throws IOException, YarnException {
ApplicationId appId=null;
appId=ApplicationId.newInstance(0,1);
writeApplicationStartData(appId);
writeApplicationFinishData(appId);
GetApplicationReportRequest request=GetApplicationReportRequest.newInstance(appId);
GetApplicationReportResponse response=historyServer.getClientService().getClientHandler().getApplicationReport(request);
ApplicationReport appReport=response.getApplicationReport();
Assert.assertNotNull(appReport);
Assert.assertEquals("application_0_0001",appReport.getApplicationId().toString());
Assert.assertEquals("test type",appReport.getApplicationType().toString());
Assert.assertEquals("test queue",appReport.getQueue().toString());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testContainerReport() throws IOException, YarnException {
ApplicationId appId=ApplicationId.newInstance(0,1);
writeApplicationStartData(appId);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
ContainerId containerId=ContainerId.newInstance(appAttemptId,1);
writeContainerStartData(containerId);
writeContainerFinishData(containerId);
writeApplicationFinishData(appId);
GetContainerReportRequest request=GetContainerReportRequest.newInstance(containerId);
GetContainerReportResponse response=historyServer.getClientService().getClientHandler().getContainerReport(request);
ContainerReport container=response.getContainerReport();
Assert.assertNotNull(container);
Assert.assertEquals(containerId,container.getContainerId());
Assert.assertEquals(expectedLogUrl,container.getLogUrl());
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.TestApplicationHistoryManagerImpl APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier IgnoredMethod HybridVerifier
@Test @Ignore public void testApplicationReport() throws IOException, YarnException {
ApplicationId appId=null;
appId=ApplicationId.newInstance(0,1);
writeApplicationStartData(appId);
writeApplicationFinishData(appId);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
writeApplicationAttemptStartData(appAttemptId);
writeApplicationAttemptFinishData(appAttemptId);
ApplicationReport appReport=applicationHistoryManagerImpl.getApplication(appId);
Assert.assertNotNull(appReport);
Assert.assertEquals(appId,appReport.getApplicationId());
Assert.assertEquals(appAttemptId,appReport.getCurrentApplicationAttemptId());
Assert.assertEquals(appAttemptId.toString(),appReport.getHost());
Assert.assertEquals("test type",appReport.getApplicationType().toString());
Assert.assertEquals("test queue",appReport.getQueue().toString());
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.TestApplicationHistoryServer InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test(timeout=50000) public void testStartStopServer() throws Exception {
Configuration config=new YarnConfiguration();
UserGroupInformation ugi=UserGroupInformation.createUserForTesting("ambari",new String[]{"ambari"});
mockStatic(UserGroupInformation.class);
expect(UserGroupInformation.getCurrentUser()).andReturn(ugi).anyTimes();
expect(UserGroupInformation.isSecurityEnabled()).andReturn(false).anyTimes();
config.set(YarnConfiguration.APPLICATION_HISTORY_STORE,"org.apache.hadoop.yarn.server.applicationhistoryservice.NullApplicationHistoryStore");
Connection connection=createNiceMock(Connection.class);
Statement stmt=createNiceMock(Statement.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
ResultSet rs=createNiceMock(ResultSet.class);
mockStatic(DriverManager.class);
expect(DriverManager.getConnection("jdbc:phoenix:localhost:2181:/ams-hbase-unsecure")).andReturn(connection).anyTimes();
expect(connection.createStatement()).andReturn(stmt).anyTimes();
expect(connection.prepareStatement(anyString())).andReturn(preparedStatement).anyTimes();
suppress(method(Statement.class,"executeUpdate",String.class));
expect(preparedStatement.executeQuery()).andReturn(rs).anyTimes();
expect(rs.next()).andReturn(false).anyTimes();
preparedStatement.close();
expectLastCall().anyTimes();
connection.close();
expectLastCall();
EasyMock.replay(connection,stmt,preparedStatement,rs);
replayAll();
historyServer=new ApplicationHistoryServer();
historyServer.init(config);
verifyAll();
assertEquals(STATE.INITED,historyServer.getServiceState());
assertEquals(4,historyServer.getServices().size());
ApplicationHistoryClientService historyService=historyServer.getClientService();
assertNotNull(historyServer.getClientService());
assertEquals(STATE.INITED,historyService.getServiceState());
historyServer.start();
assertEquals(STATE.STARTED,historyServer.getServiceState());
assertEquals(STATE.STARTED,historyService.getServiceState());
historyServer.stop();
assertEquals(STATE.STOPPED,historyServer.getServiceState());
}
TestInitializer InternalCallVerifier NullVerifier HybridVerifier
@Before @SuppressWarnings("all") public void setup() throws URISyntaxException, IOException {
folder.create();
File hbaseSite=folder.newFile("hbase-site.xml");
File amsSite=folder.newFile("ams-site.xml");
FileUtils.writeStringToFile(hbaseSite,"\n" + " \n" + " hbase.defaults.for.version.skip \n"+ " true \n"+ " "+ " "+ " hbase.zookeeper.quorum \n"+ " localhost \n"+ " "+ " ");
FileUtils.writeStringToFile(amsSite,"\n" + " \n" + " test \n"+ " testReady \n"+ " \n"+ " \n"+ " timeline.metrics.host.aggregator.hourly.disabled \n"+ " true \n"+ " \n"+ " Disable host based hourly aggregations.\n"+ " \n"+ " \n"+ " \n"+ " timeline.metrics.host.aggregator.minute.disabled \n"+ " true \n"+ " \n"+ " Disable host based minute aggregations.\n"+ " \n"+ " \n"+ " \n"+ " timeline.metrics.cluster.aggregator.hourly.disabled \n"+ " true \n"+ " \n"+ " Disable cluster based hourly aggregations.\n"+ " \n"+ " \n"+ " \n"+ " timeline.metrics.cluster.aggregator.minute.disabled \n"+ " true \n"+ " \n"+ " Disable cluster based minute aggregations.\n"+ " \n"+ " "+ " ");
ClassLoader currentClassLoader=Thread.currentThread().getContextClassLoader();
URLClassLoader urlClassLoader=null;
try {
urlClassLoader=new URLClassLoader(new URL[]{folder.getRoot().toURI().toURL()},currentClassLoader);
}
catch ( MalformedURLException e) {
e.printStackTrace();
}
Thread.currentThread().setContextClassLoader(urlClassLoader);
metricsConf=new Configuration(false);
metricsConf.addResource(Thread.currentThread().getContextClassLoader().getResource(METRICS_SITE_CONFIGURATION_FILE).toURI().toURL());
assertNotNull(metricsConf.get("test"));
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.TestFileSystemApplicationHistoryStore InternalCallVerifier BooleanVerifier
@Test public void testMassiveWriteContainerHistoryData() throws IOException {
long mb=1024 * 1024;
long usedDiskBefore=fs.getContentSummary(fsWorkingPath).getLength() / mb;
ApplicationId appId=ApplicationId.newInstance(0,1);
writeApplicationStartData(appId);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
for (int i=1; i <= 100000; ++i) {
ContainerId containerId=ContainerId.newInstance(appAttemptId,i);
writeContainerStartData(containerId);
writeContainerFinishData(containerId);
}
writeApplicationFinishData(appId);
long usedDiskAfter=fs.getContentSummary(fsWorkingPath).getLength() / mb;
Assert.assertTrue((usedDiskAfter - usedDiskBefore) < 20);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.TestMemoryApplicationHistoryStore APIUtilityVerifier IterativeVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadWriteApplicationAttemptHistory() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
try {
writeApplicationAttemptFinishData(appAttemptId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is stored before the start information"));
}
int numAppAttempts=5;
writeApplicationStartData(appId);
for (int i=1; i <= numAppAttempts; ++i) {
appAttemptId=ApplicationAttemptId.newInstance(appId,i);
writeApplicationAttemptStartData(appAttemptId);
writeApplicationAttemptFinishData(appAttemptId);
}
Assert.assertEquals(numAppAttempts,store.getApplicationAttempts(appId).size());
for (int i=1; i <= numAppAttempts; ++i) {
appAttemptId=ApplicationAttemptId.newInstance(appId,i);
ApplicationAttemptHistoryData data=store.getApplicationAttempt(appAttemptId);
Assert.assertNotNull(data);
Assert.assertEquals(appAttemptId.toString(),data.getHost());
Assert.assertEquals(appAttemptId.toString(),data.getDiagnosticsInfo());
}
writeApplicationFinishData(appId);
appAttemptId=ApplicationAttemptId.newInstance(appId,1);
try {
writeApplicationAttemptStartData(appAttemptId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is already stored"));
}
try {
writeApplicationAttemptFinishData(appAttemptId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is already stored"));
}
}
APIUtilityVerifier IterativeVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadWriteApplicationHistory() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
try {
writeApplicationFinishData(appId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is stored before the start information"));
}
int numApps=5;
for (int i=1; i <= numApps; ++i) {
appId=ApplicationId.newInstance(0,i);
writeApplicationStartData(appId);
writeApplicationFinishData(appId);
}
Assert.assertEquals(numApps,store.getAllApplications().size());
for (int i=1; i <= numApps; ++i) {
appId=ApplicationId.newInstance(0,i);
ApplicationHistoryData data=store.getApplication(appId);
Assert.assertNotNull(data);
Assert.assertEquals(appId.toString(),data.getApplicationName());
Assert.assertEquals(appId.toString(),data.getDiagnosticsInfo());
}
appId=ApplicationId.newInstance(0,1);
try {
writeApplicationStartData(appId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is already stored"));
}
try {
writeApplicationFinishData(appId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is already stored"));
}
}
APIUtilityVerifier IterativeVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testReadWriteContainerHistory() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
ContainerId containerId=ContainerId.newInstance(appAttemptId,1);
try {
writeContainerFinishData(containerId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is stored before the start information"));
}
writeApplicationAttemptStartData(appAttemptId);
int numContainers=5;
for (int i=1; i <= numContainers; ++i) {
containerId=ContainerId.newInstance(appAttemptId,i);
writeContainerStartData(containerId);
writeContainerFinishData(containerId);
}
Assert.assertEquals(numContainers,store.getContainers(appAttemptId).size());
for (int i=1; i <= numContainers; ++i) {
containerId=ContainerId.newInstance(appAttemptId,i);
ContainerHistoryData data=store.getContainer(containerId);
Assert.assertNotNull(data);
Assert.assertEquals(Priority.newInstance(containerId.getId()),data.getPriority());
Assert.assertEquals(containerId.toString(),data.getDiagnosticsInfo());
}
ContainerHistoryData masterContainer=store.getAMContainer(appAttemptId);
Assert.assertNotNull(masterContainer);
Assert.assertEquals(ContainerId.newInstance(appAttemptId,1),masterContainer.getContainerId());
writeApplicationAttemptFinishData(appAttemptId);
containerId=ContainerId.newInstance(appAttemptId,1);
try {
writeContainerStartData(containerId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is already stored"));
}
try {
writeContainerFinishData(containerId);
Assert.fail();
}
catch ( IOException e) {
Assert.assertTrue(e.getMessage().contains("is already stored"));
}
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.data.TestAppMetrics InternalCallVerifier EqualityVerifier
@Test public void testHostDiskMetricsSerialization() throws IOException {
long timestamp=1411663170112L;
AppMetrics appMetrics=new AppMetrics(new ApplicationInstance("localhost",AppID.HOST,""),timestamp);
Metric diskFree=appMetrics.createMetric("disk_free");
double value=5.35;
diskFree.putMetric(timestamps[0],Double.toString(value));
diskFree.putMetric(timestamps[1],Double.toString(value));
diskFree.putMetric(timestamps[2],Double.toString(value));
diskFree.putMetric(timestamps[3],Double.toString(value));
appMetrics.addMetric(diskFree);
String expected=SAMPLE_SINGLE_METRIC_HOST_JSON;
String s=new Json(true).serialize(appMetrics);
assertEquals("Serialized Host Metrics",expected,s);
}
InternalCallVerifier EqualityVerifier
@Test public void testSingleHostManyMetricsSerialization() throws IOException {
AppMetrics appMetrics=new AppMetrics(new ApplicationInstance("localhost",AppID.HOST,""),timestamps[0]);
Metric diskFree=appMetrics.createMetric("disk_free");
double value=5.35;
diskFree.putMetric(timestamps[0],Double.toString(value));
diskFree.putMetric(timestamps[1],Double.toString(value));
diskFree.putMetric(timestamps[2],Double.toString(value));
diskFree.putMetric(timestamps[3],Double.toString(value));
appMetrics.addMetric(diskFree);
Metric memCache=appMetrics.createMetric("mem_cached");
double memVal=94;
memCache.putMetric(timestamps[0],Double.toString(memVal));
memCache.putMetric(timestamps[1],Double.toString(memVal));
memCache.putMetric(timestamps[2],Double.toString(memVal));
memCache.putMetric(timestamps[3],Double.toString(memVal));
appMetrics.addMetric(memCache);
String expected=SAMPLE_TWO_METRIC_HOST_JSON;
String s=new Json(true).serialize(appMetrics);
assertEquals("Serialized Host Metrics",expected,s);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.data.TestMetric InternalCallVerifier EqualityVerifier ConditionMatcher HybridVerifier
@Test public void testDeserializeObjectFromString() throws IOException {
String source=SAMPLE_METRIC_IN_JSON;
Metric m=new Json().deserialize(source,Metric.class);
assertEquals("localhost",m.getHostname());
assertEquals("HOST",m.getAppid());
assertEquals("",m.getInstanceid());
assertEquals("disk_free",m.getMetricname());
assertEquals("0",m.getStarttime());
assertThat(m.getMetrics()).isNotEmpty().hasSize(4).contains(entry("0","5.35"),entry("5000","5.35"),entry("10000","5.35"),entry("15000","5.35"));
}
InternalCallVerifier EqualityVerifier
@Test public void testSerializeToJson() throws IOException {
Metric diskOnHostMetric=new Metric(new ApplicationInstance("localhost",AppID.HOST,""),"disk_free",0);
long timestamp=0;
double value=5.35;
diskOnHostMetric.putMetric(timestamp,Double.toString(value));
diskOnHostMetric.putMetric(timestamp + 5000,Double.toString(value));
diskOnHostMetric.putMetric(timestamp + 10000,Double.toString(value));
diskOnHostMetric.putMetric(timestamp + 15000,Double.toString(value));
String expected=SAMPLE_METRIC_IN_JSON;
String s=new Json(true).serialize(diskOnHostMetric);
assertEquals("Json should match",expected,s);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.net.TestRestMetricsSender InternalCallVerifier EqualityVerifier
@Test public void testPushMetrics() throws Exception {
final UrlService svcMock=createStrictMock(UrlService.class);
final String payload="test";
final String expectedResponse="mockResponse";
expect(svcMock.send(anyString())).andReturn(expectedResponse);
svcMock.disconnect();
expectLastCall();
replay(svcMock);
RestMetricsSender sender=new RestMetricsSender("expectedHostName"){
@Override protected UrlService getConnectedUrlService() throws IOException {
return svcMock;
}
}
;
String response=sender.pushMetrics(payload);
verify(svcMock);
assertEquals("",expectedResponse,response);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.util.TestRandomMetricsProvider InternalCallVerifier BooleanVerifier
@Test public void testReturnSingle(){
double from=5.25;
double to=5.40;
RandomMetricsProvider provider=new RandomMetricsProvider(from,to);
double metric=provider.next();
assertTrue("Generated metric should be in range",from < metric && metric < to);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.loadsimulator.util.TestTimeStampProvider InternalCallVerifier EqualityVerifier
@Test public void testReturnSingle(){
long startTime=1411663170112L;
int timeStep=5000;
TimeStampProvider tm=new TimeStampProvider(startTime,timeStep,0);
long tStamp=tm.next();
assertEquals("First generated timestamp should match starttime",startTime,tStamp);
}
InternalCallVerifier ConditionMatcher
@Test public void testReturnTstampsForSendInterval() throws Exception {
long startTime=0;
int collectInterval=5;
int sendInterval=30;
TimeStampProvider tsp=new TimeStampProvider(startTime,collectInterval,sendInterval);
long[] timestamps=tsp.timestampsForNextInterval();
assertThat(timestamps).hasSize(6).containsOnly(0,5,10,15,20,25);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.ITPhoenixHBaseAccessor APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetClusterMetricRecordLatestWithFunction() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,new Configuration(),new TimelineMetricMetadataManager(hdb,new Configuration()));
long startTime=System.currentTimeMillis();
long ctime=startTime + 1;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",2));
ctime+=minute;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",1));
long endTime=ctime + minute + 1;
boolean success=agg.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(Collections.singletonList("disk_free"),null,null,null,null,null,Precision.SECONDS,null,true);
TimelineMetrics timelineMetrics=hdb.getAggregateMetricRecords(condition,Collections.singletonMap("disk_free",Collections.singletonList(new Function(Function.ReadFunction.SUM,null))));
assertEquals(1,timelineMetrics.getMetrics().size());
TimelineMetric metric=timelineMetrics.getMetrics().get(0);
assertEquals("disk_free._sum",metric.getMetricName());
assertEquals(1,metric.getMetricValues().size());
assertEquals(3,metric.getMetricValues().values().iterator().next().intValue());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetClusterMetricRecordsSeconds() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,new Configuration(),new TimelineMetricMetadataManager(hdb,new Configuration()));
long startTime=System.currentTimeMillis();
long ctime=startTime + 1;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",2));
ctime+=minute;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",1));
long endTime=ctime + minute + 1;
boolean success=agg.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(Collections.singletonList("disk_free"),null,null,null,startTime,endTime,Precision.SECONDS,null,true);
TimelineMetrics timelineMetrics=hdb.getAggregateMetricRecords(condition,singletonValueFunctionMap("disk_free"));
assertEquals(1,timelineMetrics.getMetrics().size());
TimelineMetric metric=timelineMetrics.getMetrics().get(0);
assertEquals("disk_free",metric.getMetricName());
assertEquals(5,metric.getMetricValues().size());
assertEquals(1.5,metric.getMetricValues().values().iterator().next(),0.00001);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetMetricRecordsSeconds() throws IOException, SQLException {
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",2));
ctime+=minute;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",1));
long endTime=ctime + minute;
Condition condition=new DefaultCondition(Collections.singletonList("disk_free"),Collections.singletonList("local1"),null,null,startTime,endTime,Precision.SECONDS,null,true);
TimelineMetrics timelineMetrics=hdb.getMetricRecords(condition,singletonValueFunctionMap("disk_free"));
assertEquals(1,timelineMetrics.getMetrics().size());
TimelineMetric metric=timelineMetrics.getMetrics().get(0);
assertEquals("disk_free",metric.getMetricName());
assertEquals("local1",metric.getHostName());
assertEquals(8,metric.getMetricValues().size());
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetMetricRecordsHours() throws IOException, SQLException {
TimelineMetricAggregator aggregator=TimelineMetricAggregatorFactory.createTimelineMetricAggregatorHourly(hdb,new Configuration());
MetricHostAggregate expectedAggregate=createMetricHostAggregate(2.0,0.0,20,15.0);
Map aggMap=new HashMap();
long startTime=System.currentTimeMillis();
int min_5=5 * 60 * 1000;
long ctime=startTime - min_5;
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
hdb.saveHostAggregateRecords(aggMap,METRICS_AGGREGATE_MINUTE_TABLE_NAME);
long endTime=ctime + min_5;
boolean success=aggregator.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(Collections.singletonList("disk_used"),Collections.singletonList("test_host"),"test_app",null,startTime,endTime,Precision.HOURS,null,true);
TimelineMetrics timelineMetrics=hdb.getMetricRecords(condition,singletonValueFunctionMap("disk_used"));
assertEquals(1,timelineMetrics.getMetrics().size());
TimelineMetric metric=timelineMetrics.getMetrics().get(0);
assertEquals("disk_used",metric.getMetricName());
assertEquals("test_host",metric.getHostName());
assertEquals(1,metric.getMetricValues().size());
Iterator> iterator=metric.getMetricValues().entrySet().iterator();
assertEquals(0.75,iterator.next().getValue(),0.00001);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetClusterMetricRecordsHours() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorHourly(hdb,new Configuration());
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
Map records=new HashMap();
records.put(createEmptyTimelineClusterMetric(ctime),new MetricClusterAggregate(4.0,2,0.0,4.0,0.0));
records.put(createEmptyTimelineClusterMetric(ctime+=minute),new MetricClusterAggregate(4.0,2,0.0,4.0,0.0));
records.put(createEmptyTimelineClusterMetric(ctime+=minute),new MetricClusterAggregate(4.0,2,0.0,4.0,0.0));
records.put(createEmptyTimelineClusterMetric(ctime+=minute),new MetricClusterAggregate(4.0,2,0.0,4.0,0.0));
hdb.saveClusterAggregateRecords(records);
boolean success=agg.doWork(startTime,ctime + minute);
assertTrue(success);
Condition condition=new DefaultCondition(Collections.singletonList("disk_used"),null,null,null,startTime,ctime + minute,Precision.HOURS,null,true);
TimelineMetrics timelineMetrics=hdb.getAggregateMetricRecords(condition,singletonValueFunctionMap("disk_used"));
assertEquals(1,timelineMetrics.getMetrics().size());
TimelineMetric metric=timelineMetrics.getMetrics().get(0);
assertEquals("disk_used",metric.getMetricName());
assertEquals("test_app",metric.getAppId());
assertEquals(1,metric.getMetricValues().size());
assertEquals(2.0,metric.getMetricValues().values().iterator().next(),0.00001);
}
APIUtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testGetMetricRecordsMinutes() throws IOException, SQLException {
TimelineMetricAggregator aggregatorMinute=TimelineMetricAggregatorFactory.createTimelineMetricAggregatorMinute(hdb,new Configuration());
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime + minute,"local1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",2));
long endTime=ctime + minute;
boolean success=aggregatorMinute.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(Collections.singletonList("disk_free"),Collections.singletonList("local1"),null,null,startTime,endTime,Precision.MINUTES,null,false);
TimelineMetrics timelineMetrics=hdb.getMetricRecords(condition,singletonValueFunctionMap("disk_free"));
assertEquals(1,timelineMetrics.getMetrics().size());
TimelineMetric metric=timelineMetrics.getMetrics().get(0);
assertEquals("disk_free",metric.getMetricName());
assertEquals("local1",metric.getHostName());
assertEquals(1,metric.getMetricValues().size());
Iterator> iterator=metric.getMetricValues().entrySet().iterator();
assertEquals(1.5,iterator.next().getValue(),0.00001);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.PhoenixHBaseAccessorTest InternalCallVerifier EqualityVerifier
@Test public void testGetMetricRecords() throws SQLException, IOException {
Configuration hbaseConf=new Configuration();
hbaseConf.setStrings(ZOOKEEPER_QUORUM,"quorum");
Configuration metricsConf=new Configuration();
ConnectionProvider connectionProvider=new ConnectionProvider(){
@Override public Connection getConnection() throws SQLException {
return null;
}
}
;
PhoenixHBaseAccessor accessor=new PhoenixHBaseAccessor(hbaseConf,metricsConf,connectionProvider);
List metricNames=new LinkedList<>();
List hostnames=new LinkedList<>();
Map> metricFunctions=new HashMap<>();
PowerMock.mockStatic(PhoenixTransactSQL.class);
PreparedStatement preparedStatementMock=EasyMock.createNiceMock(PreparedStatement.class);
Condition condition=new DefaultCondition(metricNames,hostnames,"appid","instanceid",123L,234L,Precision.SECONDS,10,true);
EasyMock.expect(PhoenixTransactSQL.prepareGetMetricsSqlStmt(null,condition)).andReturn(preparedStatementMock).once();
ResultSet rsMock=EasyMock.createNiceMock(ResultSet.class);
EasyMock.expect(preparedStatementMock.executeQuery()).andReturn(rsMock);
PowerMock.replayAll();
EasyMock.replay(preparedStatementMock,rsMock);
TimelineMetrics tml=accessor.getMetricRecords(condition,metricFunctions);
Condition condition2=new DefaultCondition(metricNames,hostnames,"appid","instanceid",234L,123L,Precision.SECONDS,10,true);
TimelineMetrics tml2=accessor.getMetricRecords(condition2,metricFunctions);
assertEquals(0,tml2.getMetrics().size());
PowerMock.verifyAll();
EasyMock.verify(preparedStatementMock,rsMock);
}
InternalCallVerifier EqualityVerifier
@Test public void testGetMetricRecordsIOException() throws SQLException, IOException {
Configuration hbaseConf=new Configuration();
hbaseConf.setStrings(ZOOKEEPER_QUORUM,"quorum");
Configuration metricsConf=new Configuration();
ConnectionProvider connectionProvider=new ConnectionProvider(){
@Override public Connection getConnection() throws SQLException {
return null;
}
}
;
PhoenixHBaseAccessor accessor=new PhoenixHBaseAccessor(hbaseConf,metricsConf,connectionProvider);
List metricNames=new LinkedList<>();
List hostnames=new LinkedList<>();
Map> metricFunctions=new HashMap<>();
PowerMock.mockStatic(PhoenixTransactSQL.class);
PreparedStatement preparedStatementMock=EasyMock.createNiceMock(PreparedStatement.class);
Condition condition=new DefaultCondition(metricNames,hostnames,"appid","instanceid",123L,234L,Precision.SECONDS,10,true);
EasyMock.expect(PhoenixTransactSQL.prepareGetMetricsSqlStmt(null,condition)).andReturn(preparedStatementMock).once();
ResultSet rsMock=EasyMock.createNiceMock(ResultSet.class);
RuntimeException runtimeException=EasyMock.createNiceMock(RuntimeException.class);
IOException io=EasyMock.createNiceMock(IOException.class);
EasyMock.expect(preparedStatementMock.executeQuery()).andThrow(runtimeException);
EasyMock.expect(runtimeException.getCause()).andReturn(io).atLeastOnce();
StackTraceElement stackTrace[]=new StackTraceElement[]{new StackTraceElement("TimeRange","method","file",1)};
EasyMock.expect(io.getStackTrace()).andReturn(stackTrace).atLeastOnce();
PowerMock.replayAll();
EasyMock.replay(preparedStatementMock,rsMock,io,runtimeException);
TimelineMetrics tml=accessor.getMetricRecords(condition,metricFunctions);
assertEquals(0,tml.getMetrics().size());
PowerMock.verifyAll();
EasyMock.verify(preparedStatementMock,rsMock,io,runtimeException);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TestMetricHostAggregate InternalCallVerifier ConditionMatcher
@Test public void testCreateAggregate() throws Exception {
MetricHostAggregate aggregate=createAggregate(3.0,1.0,2.0,2);
assertThat(aggregate.getSum()).isEqualTo(3.0);
assertThat(aggregate.getMin()).isEqualTo(1.0);
assertThat(aggregate.getMax()).isEqualTo(2.0);
assertThat(aggregate.getAvg()).isEqualTo(3.0 / 2);
}
InternalCallVerifier ConditionMatcher
@Test public void testUpdateAggregates() throws Exception {
MetricHostAggregate aggregate=createAggregate(3.0,1.0,2.0,2);
aggregate.updateAggregates(createAggregate(8.0,0.5,7.5,2));
aggregate.updateAggregates(createAggregate(1.0,1.0,1.0,1));
assertThat(aggregate.getSum()).isEqualTo(12.0);
assertThat(aggregate.getMin()).isEqualTo(0.5);
assertThat(aggregate.getMax()).isEqualTo(7.5);
assertThat(aggregate.getAvg()).isEqualTo((3.0 + 8.0 + 1.0) / 5);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.TestPhoenixTransactSQL InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testConditionClause() throws Exception {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
String preparedClause=condition.getConditionClause().toString();
String expectedClause="(METRIC_NAME IN (?, ?)) AND HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPrepareGetMetricsNoPrecision() throws SQLException {
Long endTime=1407959918L;
Long startTime=endTime - 200;
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD"));
Assert.assertEquals(Precision.SECONDS,condition.getPrecision());
verify(connection,preparedStatement);
reset(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.HOUR * 2 / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD"));
Assert.assertEquals(Precision.SECONDS,condition.getPrecision());
verify(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.DAY / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_MINUTE"));
Assert.assertEquals(Precision.MINUTES,condition.getPrecision());
verify(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.DAY * 30 / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_HOURLY"));
Assert.assertEquals(Precision.HOURS,condition.getPrecision());
verify(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.DAY * 30 * 2 / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_DAILY"));
Assert.assertEquals(Precision.DAYS,condition.getPrecision());
verify(connection,preparedStatement);
}
InternalCallVerifier BooleanVerifier
@Test public void testPrepareGetAggregatePrecisionHours() throws SQLException {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,Precision.HOURS,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE_HOURLY"));
verify(connection,preparedStatement);
}
InternalCallVerifier BooleanVerifier
@Test public void testPrepareGetLatestMetricSqlStmtMultipleHostNames() throws SQLException {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Arrays.asList("h1","h2"),"a1","i1",null,null,null,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
ParameterMetaData parameterMetaData=createNiceMock(ParameterMetaData.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
expect(preparedStatement.getParameterMetaData()).andReturn(parameterMetaData).once();
expect(parameterMetaData.getParameterCount()).andReturn(6).once();
replay(connection,preparedStatement,parameterMetaData);
PhoenixTransactSQL.prepareGetLatestMetricSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD"));
Assert.assertTrue(stmt.contains("JOIN"));
verify(connection,preparedStatement,parameterMetaData);
}
InternalCallVerifier BooleanVerifier
@Test public void testPrepareGetMetricsPrecisionHours() throws SQLException {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,Precision.HOURS,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_HOURLY"));
verify(connection,preparedStatement);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testLikeConditionClause() throws Exception {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","some=%.metric"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
String preparedClause=condition.getConditionClause().toString();
String expectedClause="(METRIC_NAME IN (?) OR METRIC_NAME LIKE ?) AND HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
condition=new DefaultCondition(Collections.emptyList(),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
preparedClause=condition.getConditionClause().toString();
expectedClause=" HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
condition=new DefaultCondition(null,Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
preparedClause=condition.getConditionClause().toString();
expectedClause=" HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
condition=new DefaultCondition(Arrays.asList("some=%.metric"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
preparedClause=condition.getConditionClause().toString();
expectedClause="(METRIC_NAME LIKE ?) AND HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
condition=new DefaultCondition(Arrays.asList("some=%.metric1","some=%.metric2","some=%.metric3"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
preparedClause=condition.getConditionClause().toString();
expectedClause="(METRIC_NAME LIKE ? OR METRIC_NAME LIKE ? OR METRIC_NAME LIKE ?) AND HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSplitByMetricNamesCondition() throws Exception {
Condition c=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,null,null,false);
SplitByMetricNamesCondition condition=new SplitByMetricNamesCondition(c);
condition.setCurrentMetric(c.getMetricNames().get(0));
String preparedClause=condition.getConditionClause().toString();
String expectedClause="METRIC_NAME = ? AND HOSTNAME = ? AND " + "APP_ID = ? AND INSTANCE_ID = ? AND SERVER_TIME >= ? AND SERVER_TIME < ?";
Assert.assertNotNull(preparedClause);
Assert.assertEquals(expectedClause,preparedClause);
}
InternalCallVerifier BooleanVerifier
@Test public void testPrepareGetAggregatePrecisionMINUTES() throws SQLException {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,Precision.MINUTES,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE"));
verify(connection,preparedStatement);
}
InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testPrepareGetAggregateNoPrecision() throws SQLException {
Long endTime=1407959918L;
Long startTime=1407959718L;
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE"));
Assert.assertEquals(Precision.SECONDS,condition.getPrecision());
verify(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.DAY / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE"));
Assert.assertEquals(Precision.MINUTES,condition.getPrecision());
verify(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.DAY * 30 / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE_HOURLY"));
Assert.assertEquals(Precision.HOURS,condition.getPrecision());
verify(connection,preparedStatement);
startTime=endTime - PhoenixTransactSQL.DAY * 30 * 2 / 1000;
condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",startTime,endTime,null,null,false);
connection=createNiceMock(Connection.class);
preparedStatement=createNiceMock(PreparedStatement.class);
stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetAggregateSqlStmt(connection,condition);
stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_AGGREGATE_DAILY"));
Assert.assertEquals(Precision.DAYS,condition.getPrecision());
verify(connection,preparedStatement);
}
InternalCallVerifier BooleanVerifier
@Test public void testPrepareGetLatestMetricSqlStmtSortMergeJoinAlgorithm() throws SQLException {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Arrays.asList("h1"),"a1","i1",null,null,null,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
ParameterMetaData parameterMetaData=createNiceMock(ParameterMetaData.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
expect(preparedStatement.getParameterMetaData()).andReturn(parameterMetaData).anyTimes();
expect(parameterMetaData.getParameterCount()).andReturn(6).anyTimes();
replay(connection,preparedStatement,parameterMetaData);
PhoenixTransactSQL.setSortMergeJoinEnabled(true);
PhoenixTransactSQL.prepareGetLatestMetricSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("/*+ USE_SORT_MERGE_JOIN NO_CACHE */"));
}
InternalCallVerifier BooleanVerifier
@Test public void testPrepareGetMetricsPrecisionMinutes() throws SQLException {
Condition condition=new DefaultCondition(Arrays.asList("cpu_user","mem_free"),Collections.singletonList("h1"),"a1","i1",1407959718L,1407959918L,Precision.MINUTES,null,false);
Connection connection=createNiceMock(Connection.class);
PreparedStatement preparedStatement=createNiceMock(PreparedStatement.class);
Capture stmtCapture=new Capture();
expect(connection.prepareStatement(EasyMock.and(EasyMock.anyString(),EasyMock.capture(stmtCapture)))).andReturn(preparedStatement);
replay(connection,preparedStatement);
PhoenixTransactSQL.prepareGetMetricsSqlStmt(connection,condition);
String stmt=stmtCapture.getValue();
Assert.assertTrue(stmt.contains("FROM METRIC_RECORD_MINUTE"));
verify(connection,preparedStatement);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.AbstractTimelineAggregatorTest InternalCallVerifier EqualityVerifier
@Test public void testDoWorkOnInterruptedRuns() throws Exception {
int startingTime=10000;
clock.setTime(startingTime);
long timeOfFirstStep=clock.getTime();
long sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime should be zero",0,startTimeInDoWork.get());
assertEquals("endTime should be zero",0,endTimeInDoWork.get());
assertEquals("do not aggregate on first run",0,actualRuns);
assertEquals("first checkpoint set on current time",timeOfFirstStep,checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
clock.setTime(timeOfFirstStep + 1);
long timeOfSecondStep=clock.getTime();
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime should be on previous checkpoint since it did not" + " run yet",timeOfFirstStep,startTimeInDoWork.get());
assertEquals("endTime can be start + interval",startingTime + sleepIntervalMillis,endTimeInDoWork.get());
assertEquals("should aggregate",1,actualRuns);
assertEquals("checkpoint here should be set to min(endTime,currentTime), " + "it is currentTime in our scenario",timeOfSecondStep,checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
clock.setTime(startingTime + 2);
long timeOfThirdStep=clock.getTime();
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime should be previous checkpoint",timeOfSecondStep,startTimeInDoWork.get());
assertEquals("endTime can be start + interval",timeOfSecondStep + sleepIntervalMillis,endTimeInDoWork.get());
assertEquals("should aggregate",2,actualRuns);
assertEquals("checkpoint here should be set to min(endTime,currentTime), " + "it is currentTime in our scenario",timeOfThirdStep,checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
}
InternalCallVerifier EqualityVerifier
@Test public void testDoWorkOnZeroDelay() throws Exception {
clock.setTime(0);
long sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime should be zero",0,startTimeInDoWork.get());
assertEquals("endTime should be zero",0,endTimeInDoWork.get());
assertEquals(0,checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
assertEquals("Do not aggregate on first run",0,actualRuns);
clock.setTime(clock.getTime() + sleepIntervalMillis);
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime",clock.getTime() - sleepIntervalMillis,startTimeInDoWork.get());
assertEquals("endTime",clock.getTime(),endTimeInDoWork.get());
assertEquals(clock.getTime(),checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
assertEquals(1,actualRuns);
clock.setTime(clock.getTime() + sleepIntervalMillis);
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime",clock.getTime() - sleepIntervalMillis,startTimeInDoWork.get());
assertEquals("endTime",clock.getTime(),endTimeInDoWork.get());
assertEquals(clock.getTime(),checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
assertEquals(2,actualRuns);
clock.setTime(clock.getTime() + (checkpointCutOffMultiplier * sleepIntervalMillis));
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime after 2xinterval",clock.getTime() - (checkpointCutOffMultiplier * sleepIntervalMillis),startTimeInDoWork.get());
assertEquals("endTime after 2xinterval",clock.getTime() - sleepIntervalMillis,endTimeInDoWork.get());
assertEquals("checkpoint after 2xinterval",clock.getTime() - sleepIntervalMillis,checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
assertEquals(3,actualRuns);
clock.setTime(clock.getTime() + sleepIntervalMillis);
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals("startTime ",clock.getTime() - (checkpointCutOffMultiplier * sleepIntervalMillis),startTimeInDoWork.get());
assertEquals("endTime ",clock.getTime() - sleepIntervalMillis,endTimeInDoWork.get());
assertEquals("checkpoint ",clock.getTime() - sleepIntervalMillis,checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
assertEquals(4,actualRuns);
clock.setTime(clock.getTime() + (checkpointCutOffMultiplier * sleepIntervalMillis));
sleep=agg.runOnce(sleepIntervalMillis);
assertEquals(4,actualRuns);
assertEquals("checkpoint after too much lag is reset to " + "current clock time",clock.getTime(),checkPoint.get());
assertEquals(sleep,sleepIntervalMillis);
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.ITClusterAggregator APIUtilityVerifier IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testClusterAggregateMetricNormalization() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,getConfigurationForTest(false),new TimelineMetricMetadataManager(hdb,new Configuration()));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
TimelineMetric metric1=new TimelineMetric();
metric1.setMetricName("yarn.ClusterMetrics.NumActiveNMs");
metric1.setAppId("resourcemanager");
metric1.setHostName("h1");
metric1.setStartTime(1431372311811l);
metric1.setMetricValues(new TreeMap(){
{
put(1431372311811l,1.0);
put(1431372321811l,1.0);
put(1431372331811l,1.0);
put(1431372341811l,1.0);
put(1431372351811l,1.0);
put(1431372361811l,1.0);
put(1431372371810l,1.0);
}
}
);
TimelineMetric metric2=new TimelineMetric();
metric2.setMetricName("yarn.ClusterMetrics.NumActiveNMs");
metric2.setAppId("resourcemanager");
metric2.setHostName("h1");
metric2.setStartTime(1431372381810l);
metric2.setMetricValues(new TreeMap(){
{
put(1431372381810l,1.0);
put(1431372391811l,1.0);
put(1431372401811l,1.0);
put(1431372411811l,1.0);
put(1431372421811l,1.0);
put(1431372431811l,1.0);
put(1431372441810l,1.0);
}
}
);
TimelineMetrics metrics=new TimelineMetrics();
metrics.setMetrics(Collections.singletonList(metric1));
insertMetricRecords(conn,metrics,1431372371810l);
metrics.setMetrics(Collections.singletonList(metric2));
insertMetricRecords(conn,metrics,1431372441810l);
long startTime=1431372055000l;
long endTime=1431372655000l;
agg.doWork(startTime,endTime);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_CLUSTER_AGGREGATE_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_CLUSTER_AGGREGATE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
int recordCount=0;
while (rs.next()) {
TimelineClusterMetric currentMetric=metricReader.fromResultSet(rs);
MetricClusterAggregate currentHostAggregate=readHelper.getMetricClusterAggregateFromResultSet(rs);
if ("yarn.ClusterMetrics.NumActiveNMs".equals(currentMetric.getMetricName())) {
assertEquals(1,currentHostAggregate.getNumberOfHosts());
assertEquals(1.0,currentHostAggregate.getMax());
assertEquals(1.0,currentHostAggregate.getMin());
assertEquals(1.0,currentHostAggregate.getSum());
recordCount++;
}
else {
fail("Unexpected entry");
}
}
Assert.assertEquals(5,recordCount);
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAppLevelHostMetricAggregates() throws Exception {
Configuration conf=getConfigurationForTest(false);
conf.set(CLUSTER_AGGREGATOR_APP_IDS,"app1");
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,conf,new TimelineMetricMetadataManager(hdb,new Configuration()));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric((ctime),"local1","app1",null,"app_metric_random",1));
ctime+=10;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","cpu_user",1));
ctime+=10;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","cpu_user",2));
long endTime=ctime + minute;
boolean success=agg.doWork(startTime,endTime);
Condition condition=new DefaultCondition(Collections.singletonList("cpu_user"),null,"app1",null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_CLUSTER_AGGREGATE_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_CLUSTER_AGGREGATE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
int recordCount=0;
TimelineClusterMetric currentMetric=null;
MetricClusterAggregate currentHostAggregate=null;
while (rs.next()) {
currentMetric=metricReader.fromResultSet(rs);
currentHostAggregate=readHelper.getMetricClusterAggregateFromResultSet(rs);
recordCount++;
}
assertEquals(3,recordCount);
assertNotNull(currentMetric);
assertEquals("cpu_user",currentMetric.getMetricName());
assertEquals("app1",currentMetric.getAppId());
assertNotNull(currentHostAggregate);
assertEquals(1,currentHostAggregate.getNumberOfHosts());
assertEquals(1.0d,currentHostAggregate.getSum());
}
APIUtilityVerifier IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testShouldAggregateClusterIgnoringInstance() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,getConfigurationForTest(false),new TimelineMetricMetadataManager(hdb,new Configuration()));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000 * 2;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime - 100,"local1","i1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime - 100,"local2","i1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime + 100,"local1","i2","disk_free",3));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime + 100,"local2","i2","disk_free",4));
ctime+=minute;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime - 100,"local1","i1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime - 100,"local2","i1","disk_free",3));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime + 100,"local1","i2","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime + 100,"local2","i2","disk_free",4));
long endTime=ctime + minute;
boolean success=agg.doWork(startTime - 1000,endTime + 1000);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_CLUSTER_AGGREGATE_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_CLUSTER_AGGREGATE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
int recordCount=0;
while (rs.next()) {
TimelineClusterMetric currentMetric=metricReader.fromResultSet(rs);
MetricClusterAggregate currentHostAggregate=readHelper.getMetricClusterAggregateFromResultSet(rs);
if ("disk_free".equals(currentMetric.getMetricName())) {
System.out.println("OUTPUT: " + currentMetric + " - "+ currentHostAggregate);
assertEquals(2,currentHostAggregate.getNumberOfHosts());
assertEquals(5.0,Math.floor(currentHostAggregate.getSum()));
recordCount++;
}
else {
fail("Unexpected entry");
}
}
Assert.assertEquals(5,recordCount);
}
APIUtilityVerifier IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testShouldAggregateDifferentMetricsOnClusterProperly() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,getConfigurationForTest(false),new TimelineMetricMetadataManager(hdb,new Configuration()));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_used",1));
ctime+=2 * minute;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_used",1));
long endTime=ctime + minute;
boolean success=agg.doWork(startTime,endTime);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_CLUSTER_AGGREGATE_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_CLUSTER_AGGREGATE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
int recordCount=0;
while (rs.next()) {
TimelineClusterMetric currentMetric=metricReader.fromResultSet(rs);
MetricClusterAggregate currentHostAggregate=readHelper.getMetricClusterAggregateFromResultSet(rs);
if ("disk_free".equals(currentMetric.getMetricName())) {
assertEquals(2,currentHostAggregate.getNumberOfHosts());
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(1.0,currentHostAggregate.getMin());
assertEquals(3.0,currentHostAggregate.getSum());
recordCount++;
}
else if ("disk_used".equals(currentMetric.getMetricName())) {
assertEquals(1,currentHostAggregate.getNumberOfHosts());
assertEquals(1.0,currentHostAggregate.getMax());
assertEquals(1.0,currentHostAggregate.getMin());
assertEquals(1.0,currentHostAggregate.getSum());
recordCount++;
}
else {
fail("Unexpected entry");
}
}
}
APIUtilityVerifier IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testShouldAggregateClusterProperly() throws Exception {
TimelineMetricAggregator agg=TimelineMetricAggregatorFactory.createTimelineClusterAggregatorSecond(hdb,getConfigurationForTest(false),new TimelineMetricMetadataManager(hdb,new Configuration()));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",1));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",2));
ctime+=2 * minute;
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local1","disk_free",2));
hdb.insertMetricRecords(prepareSingleTimelineMetric(ctime,"local2","disk_free",1));
long endTime=ctime + minute;
boolean success=agg.doWork(startTime,endTime);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_CLUSTER_AGGREGATE_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_CLUSTER_AGGREGATE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
int recordCount=0;
while (rs.next()) {
TimelineClusterMetric currentMetric=metricReader.fromResultSet(rs);
MetricClusterAggregate currentHostAggregate=readHelper.getMetricClusterAggregateFromResultSet(rs);
if ("disk_free".equals(currentMetric.getMetricName())) {
assertEquals(2,currentHostAggregate.getNumberOfHosts());
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(1.0,currentHostAggregate.getMin());
assertEquals(3.0,currentHostAggregate.getSum());
recordCount++;
}
else {
fail("Unexpected entry");
}
}
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.aggregators.ITMetricAggregator APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testShouldAggregateHourProperly() throws Exception {
TimelineMetricAggregator aggregator=TimelineMetricAggregatorFactory.createTimelineMetricAggregatorHourly(hdb,getConfigurationForTest(false));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
MetricHostAggregate expectedAggregate=MetricTestHelper.createMetricHostAggregate(2.0,0.0,20,15.0);
Map aggMap=new HashMap();
int min_5=5 * 60 * 1000;
long ctime=startTime - min_5;
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
hdb.saveHostAggregateRecords(aggMap,METRICS_AGGREGATE_MINUTE_TABLE_NAME);
long endTime=ctime + min_5;
boolean success=aggregator.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_METRIC_AGGREGATE_ONLY_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_AGGREGATE_HOURLY_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
while (rs.next()) {
TimelineMetric currentMetric=readHelper.getTimelineMetricKeyFromResultSet(rs);
MetricHostAggregate currentHostAggregate=readHelper.getMetricHostAggregateFromResultSet(rs);
if ("disk_used".equals(currentMetric.getMetricName())) {
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(0.0,currentHostAggregate.getMin());
assertEquals(12 * 20,currentHostAggregate.getNumberOfSamples());
assertEquals(12 * 15.0,currentHostAggregate.getSum());
assertEquals(15.0 / 20,currentHostAggregate.getAvg());
}
}
}
APIUtilityVerifier IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testShouldAggregateMinuteProperly() throws Exception {
TimelineMetricAggregator aggregatorMinute=TimelineMetricAggregatorFactory.createTimelineMetricAggregatorMinute(hdb,getConfigurationForTest(false));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareTimelineMetrics(startTime,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
long endTime=startTime + 1000 * 60 * 4;
boolean success=aggregatorMinute.doWork(startTime,endTime);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_METRIC_AGGREGATE_ONLY_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_AGGREGATE_MINUTE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
MetricHostAggregate expectedAggregate=MetricTestHelper.createMetricHostAggregate(2.0,0.0,20,15.0);
int count=0;
while (rs.next()) {
TimelineMetric currentMetric=readHelper.getTimelineMetricKeyFromResultSet(rs);
MetricHostAggregate currentHostAggregate=readHelper.getMetricHostAggregateFromResultSet(rs);
if ("disk_free".equals(currentMetric.getMetricName())) {
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(0.0,currentHostAggregate.getMin());
assertEquals(20,currentHostAggregate.getNumberOfSamples());
assertEquals(15.0,currentHostAggregate.getSum());
assertEquals(15.0 / 20,currentHostAggregate.getAvg());
count++;
}
else if ("mem_free".equals(currentMetric.getMetricName())) {
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(0.0,currentHostAggregate.getMin());
assertEquals(20,currentHostAggregate.getNumberOfSamples());
assertEquals(15.0,currentHostAggregate.getSum());
assertEquals(15.0 / 20,currentHostAggregate.getAvg());
count++;
}
else {
fail("Unexpected entry");
}
}
assertEquals("Two aggregated entries expected",2,count);
}
APIUtilityVerifier IterativeVerifier BranchVerifier UtilityVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testAggregationUsingGroupByQuery() throws Exception {
TimelineMetricAggregator aggregatorMinute=TimelineMetricAggregatorFactory.createTimelineMetricAggregatorMinute(hdb,getConfigurationForTest(true));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
long ctime=startTime;
long minute=60 * 1000;
hdb.insertMetricRecords(prepareTimelineMetrics(startTime,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
hdb.insertMetricRecords(prepareTimelineMetrics(ctime+=minute,"local"));
long endTime=startTime + 1000 * 60 * 4;
boolean success=aggregatorMinute.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_METRIC_AGGREGATE_ONLY_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_AGGREGATE_MINUTE_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
MetricHostAggregate expectedAggregate=MetricTestHelper.createMetricHostAggregate(2.0,0.0,20,15.0);
int count=0;
while (rs.next()) {
TimelineMetric currentMetric=readHelper.getTimelineMetricKeyFromResultSet(rs);
MetricHostAggregate currentHostAggregate=readHelper.getMetricHostAggregateFromResultSet(rs);
if ("disk_free".equals(currentMetric.getMetricName())) {
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(0.0,currentHostAggregate.getMin());
assertEquals(20,currentHostAggregate.getNumberOfSamples());
assertEquals(15.0,currentHostAggregate.getSum());
assertEquals(15.0 / 20,currentHostAggregate.getAvg());
count++;
}
else if ("mem_free".equals(currentMetric.getMetricName())) {
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(0.0,currentHostAggregate.getMin());
assertEquals(20,currentHostAggregate.getNumberOfSamples());
assertEquals(15.0,currentHostAggregate.getSum());
assertEquals(15.0 / 20,currentHostAggregate.getAvg());
count++;
}
else {
fail("Unexpected entry");
}
}
assertEquals("Two aggregated entries expected",2,count);
}
APIUtilityVerifier IterativeVerifier BranchVerifier InternalCallVerifier BooleanVerifier EqualityVerifier HybridVerifier
@Test public void testMetricAggregateDaily() throws Exception {
TimelineMetricAggregator aggregator=TimelineMetricAggregatorFactory.createTimelineMetricAggregatorDaily(hdb,getConfigurationForTest(false));
TimelineMetricReadHelper readHelper=new TimelineMetricReadHelper(false);
long startTime=System.currentTimeMillis();
MetricHostAggregate expectedAggregate=MetricTestHelper.createMetricHostAggregate(2.0,0.0,20,15.0);
Map aggMap=new HashMap();
int min_5=5 * 60 * 1000;
long ctime=startTime - min_5;
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
aggMap.put(createEmptyTimelineMetric(ctime+=min_5),expectedAggregate);
hdb.saveHostAggregateRecords(aggMap,METRICS_AGGREGATE_HOURLY_TABLE_NAME);
long endTime=ctime + min_5;
boolean success=aggregator.doWork(startTime,endTime);
assertTrue(success);
Condition condition=new DefaultCondition(null,null,null,null,startTime,endTime,null,null,true);
condition.setStatement(String.format(GET_METRIC_AGGREGATE_ONLY_SQL,PhoenixTransactSQL.getNaiveTimeRangeHint(startTime,NATIVE_TIME_RANGE_DELTA),METRICS_AGGREGATE_DAILY_TABLE_NAME));
PreparedStatement pstmt=PhoenixTransactSQL.prepareGetMetricsSqlStmt(conn,condition);
ResultSet rs=pstmt.executeQuery();
while (rs.next()) {
TimelineMetric currentMetric=readHelper.getTimelineMetricKeyFromResultSet(rs);
MetricHostAggregate currentHostAggregate=readHelper.getMetricHostAggregateFromResultSet(rs);
if ("disk_used".equals(currentMetric.getMetricName())) {
assertEquals(2.0,currentHostAggregate.getMax());
assertEquals(0.0,currentHostAggregate.getMin());
assertEquals(12 * 20,currentHostAggregate.getNumberOfSamples());
assertEquals(12 * 15.0,currentHostAggregate.getSum());
assertEquals(15.0 / 20,currentHostAggregate.getAvg());
}
}
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.metrics.timeline.discovery.TestMetadataManager InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testSaveMetricsMetadata() throws Exception {
Map cachedData=metadataManager.getMetadataCache();
Assert.assertNotNull(cachedData);
Assert.assertEquals(2,cachedData.size());
TimelineMetricMetadataKey key1=new TimelineMetricMetadataKey("dummy_metric1","dummy_app1");
TimelineMetricMetadataKey key2=new TimelineMetricMetadataKey("dummy_metric2","dummy_app2");
TimelineMetricMetadata value1=new TimelineMetricMetadata("dummy_metric1","dummy_app1","Integer",null,1L,true);
TimelineMetricMetadata value2=new TimelineMetricMetadata("dummy_metric2","dummy_app2","Integer",null,1L,true);
Assert.assertEquals(value1,cachedData.get(key1));
Assert.assertEquals(value2,cachedData.get(key2));
TimelineMetricMetadataSync syncRunnable=new TimelineMetricMetadataSync(metadataManager);
syncRunnable.run();
Map savedData=hdb.getTimelineMetricMetadata();
Assert.assertNotNull(savedData);
Assert.assertEquals(2,savedData.size());
Assert.assertEquals(value1,savedData.get(key1));
Assert.assertEquals(value2,savedData.get(key2));
Map> cachedHostData=metadataManager.getHostedAppsCache();
Map> savedHostData=metadataManager.getPersistedHostedAppsData();
Assert.assertEquals(cachedData.size(),savedData.size());
Assert.assertEquals("dummy_app1",cachedHostData.get("dummy_host1").iterator().next());
Assert.assertEquals("dummy_app2",cachedHostData.get("dummy_host2").iterator().next());
Assert.assertEquals("dummy_app1",savedHostData.get("dummy_host1").iterator().next());
Assert.assertEquals("dummy_app2",savedHostData.get("dummy_host2").iterator().next());
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.timeline.TestLeveldbTimelineStore APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testDeleteEntitiesPrimaryFilters() throws IOException, InterruptedException {
Map primaryFilter=Collections.singletonMap("user",Collections.singleton((Object)"otheruser"));
TimelineEntities atsEntities=new TimelineEntities();
atsEntities.setEntities(Collections.singletonList(createEntity(entityId1b,entityType1,789l,Collections.singletonList(ev2),null,primaryFilter,null)));
TimelinePutResponse response=store.put(atsEntities);
assertEquals(0,response.getErrors().size());
NameValuePair pfPair=new NameValuePair("user","otheruser");
List entities=getEntitiesWithPrimaryFilter("type_1",pfPair);
assertEquals(1,entities.size());
verifyEntityInfo(entityId1b,entityType1,Collections.singletonList(ev2),EMPTY_REL_ENTITIES,primaryFilter,EMPTY_MAP,entities.get(0));
entities=getEntitiesWithPrimaryFilter("type_1",userFilter);
assertEquals(2,entities.size());
verifyEntityInfo(entityId1,entityType1,events1,EMPTY_REL_ENTITIES,primaryFilters,otherInfo,entities.get(0));
verifyEntityInfo(entityId1b,entityType1,events1,EMPTY_REL_ENTITIES,primaryFilters,otherInfo,entities.get(1));
((LeveldbTimelineStore)store).discardOldEntities(-123l);
assertEquals(1,getEntitiesWithPrimaryFilter("type_1",pfPair).size());
assertEquals(2,getEntitiesWithPrimaryFilter("type_1",userFilter).size());
((LeveldbTimelineStore)store).discardOldEntities(123l);
assertEquals(0,getEntities("type_1").size());
assertEquals(0,getEntities("type_2").size());
assertEquals(0,((LeveldbTimelineStore)store).getEntityTypes().size());
assertEquals(0,getEntitiesWithPrimaryFilter("type_1",pfPair).size());
assertEquals(0,getEntitiesWithPrimaryFilter("type_1",userFilter).size());
}
InternalCallVerifier EqualityVerifier
@Test public void testCacheSizes(){
Configuration conf=new Configuration();
assertEquals(10000,LeveldbTimelineStore.getStartTimeReadCacheSize(conf));
assertEquals(10000,LeveldbTimelineStore.getStartTimeWriteCacheSize(conf));
conf.setInt(YarnConfiguration.TIMELINE_SERVICE_LEVELDB_START_TIME_READ_CACHE_SIZE,10001);
assertEquals(10001,LeveldbTimelineStore.getStartTimeReadCacheSize(conf));
conf=new Configuration();
conf.setInt(YarnConfiguration.TIMELINE_SERVICE_LEVELDB_START_TIME_WRITE_CACHE_SIZE,10002);
assertEquals(10002,LeveldbTimelineStore.getStartTimeWriteCacheSize(conf));
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.webapp.TestAHSWebApp APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testAppControllerIndex() throws Exception {
ApplicationHistoryManager ahManager=mock(ApplicationHistoryManager.class);
Injector injector=WebAppTests.createMockInjector(ApplicationHistoryManager.class,ahManager);
AHSController controller=injector.getInstance(AHSController.class);
controller.index();
Assert.assertEquals("Application History",controller.get(TITLE,"unknown"));
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.webapp.TestAHSWebServices UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testInvalidUri2() throws JSONException, Exception {
WebResource r=resource();
String responseStr="";
try {
responseStr=r.accept(MediaType.APPLICATION_JSON).get(String.class);
fail("should have thrown exception on invalid uri");
}
catch ( UniformInterfaceException ue) {
ClientResponse response=ue.getResponse();
assertEquals(Status.NOT_FOUND,response.getClientResponseStatus());
WebServicesTestUtils.checkStringMatch("error string exists and shouldn't","",responseStr);
}
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testInvalidAccept() throws JSONException, Exception {
WebResource r=resource();
String responseStr="";
try {
responseStr=r.path("ws").path("v1").path("applicationhistory").accept(MediaType.TEXT_PLAIN).get(String.class);
fail("should have thrown exception on invalid uri");
}
catch ( UniformInterfaceException ue) {
ClientResponse response=ue.getResponse();
assertEquals(Status.INTERNAL_SERVER_ERROR,response.getClientResponseStatus());
WebServicesTestUtils.checkStringMatch("error string exists and shouldn't","",responseStr);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testSingleApp() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("applicationhistory").path("apps").path(appId.toString()).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
JSONObject json=response.getEntity(JSONObject.class);
assertEquals("incorrect number of elements",1,json.length());
JSONObject app=json.getJSONObject("app");
assertEquals(appId.toString(),app.getString("appId"));
assertEquals(appId.toString(),app.get("name"));
assertEquals(appId.toString(),app.get("diagnosticsInfo"));
assertEquals("test queue",app.get("queue"));
assertEquals("test user",app.get("user"));
assertEquals("test type",app.get("type"));
assertEquals(FinalApplicationStatus.UNDEFINED.toString(),app.get("finalAppStatus"));
assertEquals(YarnApplicationState.FINISHED.toString(),app.get("appState"));
}
InternalCallVerifier EqualityVerifier
@Test public void testMultipleAttempts() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("applicationhistory").path("apps").path(appId.toString()).path("appattempts").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
JSONObject json=response.getEntity(JSONObject.class);
assertEquals("incorrect number of elements",1,json.length());
JSONObject appAttempts=json.getJSONObject("appAttempts");
assertEquals("incorrect number of elements",1,appAttempts.length());
JSONArray array=appAttempts.getJSONArray("appAttempt");
assertEquals("incorrect number of elements",5,array.length());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testMultipleContainers() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("applicationhistory").path("apps").path(appId.toString()).path("appattempts").path(appAttemptId.toString()).path("containers").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
JSONObject json=response.getEntity(JSONObject.class);
assertEquals("incorrect number of elements",1,json.length());
JSONObject containers=json.getJSONObject("containers");
assertEquals("incorrect number of elements",1,containers.length());
JSONArray array=containers.getJSONArray("container");
assertEquals("incorrect number of elements",5,array.length());
}
UtilityVerifier InternalCallVerifier EqualityVerifier HybridVerifier
@Test public void testInvalidUri() throws JSONException, Exception {
WebResource r=resource();
String responseStr="";
try {
responseStr=r.path("ws").path("v1").path("applicationhistory").path("bogus").accept(MediaType.APPLICATION_JSON).get(String.class);
fail("should have thrown exception on invalid uri");
}
catch ( UniformInterfaceException ue) {
ClientResponse response=ue.getResponse();
assertEquals(Status.NOT_FOUND,response.getClientResponseStatus());
WebServicesTestUtils.checkStringMatch("error string exists and shouldn't","",responseStr);
}
}
InternalCallVerifier EqualityVerifier
@Test public void testAppsQuery() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("applicationhistory").path("apps").queryParam("state",YarnApplicationState.FINISHED.toString()).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
JSONObject json=response.getEntity(JSONObject.class);
assertEquals("incorrect number of elements",1,json.length());
JSONObject apps=json.getJSONObject("apps");
assertEquals("incorrect number of elements",1,apps.length());
JSONArray array=apps.getJSONArray("app");
assertEquals("incorrect number of elements",5,array.length());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSingleContainer() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
ContainerId containerId=ContainerId.newInstance(appAttemptId,1);
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("applicationhistory").path("apps").path(appId.toString()).path("appattempts").path(appAttemptId.toString()).path("containers").path(containerId.toString()).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
JSONObject json=response.getEntity(JSONObject.class);
assertEquals("incorrect number of elements",1,json.length());
JSONObject container=json.getJSONObject("container");
assertEquals(containerId.toString(),container.getString("containerId"));
assertEquals(containerId.toString(),container.getString("diagnosticsInfo"));
assertEquals("0",container.getString("allocatedMB"));
assertEquals("0",container.getString("allocatedVCores"));
assertEquals(NodeId.newInstance("localhost",0).toString(),container.getString("assignedNodeId"));
assertEquals(Priority.newInstance(containerId.getId()).toString(),container.getString("priority"));
Configuration conf=new YarnConfiguration();
assertEquals(WebAppUtils.getHttpSchemePrefix(conf) + WebAppUtils.getAHSWebAppURLWithoutScheme(conf) + "/applicationhistory/logs/localhost:0/container_0_0001_01_000001/"+ "container_0_0001_01_000001/test user",container.getString("logUrl"));
assertEquals(ContainerState.COMPLETE.toString(),container.getString("containerState"));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testSingleAttempt() throws Exception {
ApplicationId appId=ApplicationId.newInstance(0,1);
ApplicationAttemptId appAttemptId=ApplicationAttemptId.newInstance(appId,1);
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("applicationhistory").path("apps").path(appId.toString()).path("appattempts").path(appAttemptId.toString()).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
JSONObject json=response.getEntity(JSONObject.class);
assertEquals("incorrect number of elements",1,json.length());
JSONObject appAttempt=json.getJSONObject("appAttempt");
assertEquals(appAttemptId.toString(),appAttempt.getString("appAttemptId"));
assertEquals(appAttemptId.toString(),appAttempt.getString("host"));
assertEquals(appAttemptId.toString(),appAttempt.getString("diagnosticsInfo"));
assertEquals("test tracking url",appAttempt.getString("trackingUrl"));
assertEquals(YarnApplicationAttemptState.FINISHED.toString(),appAttempt.get("appAttemptState"));
}
Class: org.apache.hadoop.yarn.server.applicationhistoryservice.webapp.TestTimelineWebServices InternalCallVerifier EqualityVerifier
@Test public void testFromId() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("fromId","id_2").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
assertEquals(1,response.getEntity(TimelineEntities.class).getEntities().size());
response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("fromId","id_1").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
assertEquals(2,response.getEntity(TimelineEntities.class).getEntities().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetEntity() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").path("id_1").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
TimelineEntity entity=response.getEntity(TimelineEntity.class);
Assert.assertNotNull(entity);
Assert.assertEquals("id_1",entity.getEntityId());
Assert.assertEquals("type_1",entity.getEntityType());
Assert.assertEquals(123l,entity.getStartTime().longValue());
Assert.assertEquals(2,entity.getEvents().size());
Assert.assertEquals(4,entity.getPrimaryFilters().size());
Assert.assertEquals(4,entity.getOtherInfo().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetEntityFields1() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").path("id_1").queryParam("fields","events,otherinfo").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
TimelineEntity entity=response.getEntity(TimelineEntity.class);
Assert.assertNotNull(entity);
Assert.assertEquals("id_1",entity.getEntityId());
Assert.assertEquals("type_1",entity.getEntityType());
Assert.assertEquals(123l,entity.getStartTime().longValue());
Assert.assertEquals(2,entity.getEvents().size());
Assert.assertEquals(0,entity.getPrimaryFilters().size());
Assert.assertEquals(4,entity.getOtherInfo().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testAbout() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
TimelineWebServices.AboutInfo about=response.getEntity(TimelineWebServices.AboutInfo.class);
Assert.assertNotNull(about);
Assert.assertEquals("Timeline API",about.getAbout());
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testPostEntities() throws Exception {
TimelineEntities entities=new TimelineEntities();
TimelineEntity entity=new TimelineEntity();
entity.setEntityId("test id");
entity.setEntityType("test type");
entity.setStartTime(System.currentTimeMillis());
entities.addEntity(entity);
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").accept(MediaType.APPLICATION_JSON).type(MediaType.APPLICATION_JSON).post(ClientResponse.class,entities);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
TimelinePutResponse putResposne=response.getEntity(TimelinePutResponse.class);
Assert.assertNotNull(putResposne);
Assert.assertEquals(0,putResposne.getErrors().size());
response=r.path("ws").path("v1").path("timeline").path("test type").path("test id").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
entity=response.getEntity(TimelineEntity.class);
Assert.assertNotNull(entity);
Assert.assertEquals("test id",entity.getEntityId());
Assert.assertEquals("test type",entity.getEntityType());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetEvents() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").path("events").queryParam("entityId","id_1").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
TimelineEvents events=response.getEntity(TimelineEvents.class);
Assert.assertNotNull(events);
Assert.assertEquals(1,events.getAllEvents().size());
TimelineEvents.EventsOfOneEntity partEvents=events.getAllEvents().get(0);
Assert.assertEquals(2,partEvents.getEvents().size());
TimelineEvent event1=partEvents.getEvents().get(0);
Assert.assertEquals(456l,event1.getTimestamp());
Assert.assertEquals("end_event",event1.getEventType());
Assert.assertEquals(1,event1.getEventInfo().size());
TimelineEvent event2=partEvents.getEvents().get(1);
Assert.assertEquals(123l,event2.getTimestamp());
Assert.assertEquals("start_event",event2.getEventType());
Assert.assertEquals(0,event2.getEventInfo().size());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetEntities() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyEntities(response.getEntity(TimelineEntities.class));
}
InternalCallVerifier EqualityVerifier
@Test public void testPrimaryFilterNumericString(){
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("primaryFilter","other:123abc").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
assertEquals(0,response.getEntity(TimelineEntities.class).getEntities().size());
}
InternalCallVerifier EqualityVerifier NullVerifier HybridVerifier
@Test public void testGetEntityFields2() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").path("id_1").queryParam("fields","lasteventonly," + "primaryfilters,relatedentities").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
TimelineEntity entity=response.getEntity(TimelineEntity.class);
Assert.assertNotNull(entity);
Assert.assertEquals("id_1",entity.getEntityId());
Assert.assertEquals("type_1",entity.getEntityType());
Assert.assertEquals(123l,entity.getStartTime().longValue());
Assert.assertEquals(1,entity.getEvents().size());
Assert.assertEquals(4,entity.getPrimaryFilters().size());
Assert.assertEquals(0,entity.getOtherInfo().size());
}
InternalCallVerifier EqualityVerifier
@Test public void testPrimaryFilterString(){
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("primaryFilter","user:username").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyEntities(response.getEntity(TimelineEntities.class));
}
InternalCallVerifier EqualityVerifier
@Test public void testPrimaryFilterLong(){
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("primaryFilter","long:" + Long.toString((long)Integer.MAX_VALUE + 1l)).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyEntities(response.getEntity(TimelineEntities.class));
}
InternalCallVerifier EqualityVerifier
@Test public void testSecondaryFilters(){
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("secondaryFilter","user:username,appname:" + Integer.toString(Integer.MAX_VALUE)).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyEntities(response.getEntity(TimelineEntities.class));
}
APIUtilityVerifier InternalCallVerifier EqualityVerifier
@Test public void testFromTs() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("fromTs",Long.toString(beforeTime)).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
assertEquals(0,response.getEntity(TimelineEntities.class).getEntities().size());
response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("fromTs",Long.toString(System.currentTimeMillis())).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
assertEquals(2,response.getEntity(TimelineEntities.class).getEntities().size());
}
InternalCallVerifier EqualityVerifier
@Test public void testGetMetrics() throws Exception {
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("metrics").queryParam("metricNames","cpu_user").queryParam("precision","seconds").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyMetrics(response.getEntity(TimelineMetrics.class));
}
InternalCallVerifier EqualityVerifier
@Test public void testPrimaryFilterInteger(){
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("primaryFilter","appname:" + Integer.toString(Integer.MAX_VALUE)).accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyEntities(response.getEntity(TimelineEntities.class));
}
InternalCallVerifier EqualityVerifier
@Test public void testPrimaryFilterNumericStringWithQuotes(){
WebResource r=resource();
ClientResponse response=r.path("ws").path("v1").path("timeline").path("type_1").queryParam("primaryFilter","other:\"123abc\"").accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
assertEquals(MediaType.APPLICATION_JSON_TYPE,response.getType());
verifyEntities(response.getEntity(TimelineEntities.class));
}